Vehicle occupant classification system and method

ABSTRACT

A vehicle occupant classification system classifies a vehicle occupant based on data from an array of sensors using a combination of weight estimation, pattern recognition, and evaluation of statistical characteristics. This occupant classification can then be used to make an airbag deployment state decision. The major modules of this system can include a calibration unit, a weight estimation module, a pattern module, and a decision-making module. The calibration unit can perform a calibration process to normalize sensor deflections using a known deflection force in order to compensate for variations in sensors and the effects of the seat trim and foam. The weight estimation module can perform a weight estimation process that uses calibration data from the calibration process and sensor data from the sensors to translate sensor deflection due to a vehicle occupant into a displacement value. The pattern module can look for traits in the pattern of sensor deflections that are common for objects other than people. Finally, the decision-making module can make a deployment state decision for the airbag by looking at displacement trends to evaluate occupant weight and movement, and by evaluating pattern information.

This application is a divisional of U.S. patent application Ser. No.09/853,848, filed on May 10, 2001, now pending, both of which claimpriority from U.S. Provisional Application Ser. No. 60/203,001, filedMay 10, 2000, herein incorporated by reference.

BACKGROUND OF THE INVENTION

This invention relates generally to systems and methods for detectingthe occupants of an automobile. More specifically, this inventionrelates to weight-based and pattern-based automobile occupant detectionsystems and to methods and systems for making airbag deploymentdecisions based on information received from an occupant detectionsystem.

In the United States, airbag deployment forces and speeds have beenoptimized to save 180 lb. males. Unfortunately, the force and speedrequirements to save 180 lb. males are tremendous, and present apotentially fatal hazard to young children (especially when seated inrear-facing infant seats) and to small females. There is also asignificant danger of physical injury or death from airbag deploymentfor anyone who is situated too close to the dashboard/steering column orwho is otherwise in a vulnerable position during deployment. TheNational Highway Traffic Safety Administration (NHTSA) has proposed aset of requirements for automobile manufacturers to develop and install“smart” airbag systems that will detect an automobile occupant anddisable the airbag when the occupant is at risk. It is also desirable tohave systems which are able to adjust the deployment force/speed ofairbags, as occupant classification becomes more accurate.

Several key terms are used by the NHTSA and most automotivemanufacturers for occupant classification. A Rear Facing Infant Seat(RFIS) is a rear facing fixture designed to protect infants up to 30lbs. An Infant Bed is a flat bed that straps into an automobile seat andallows infant to lie horizontally and sleep. Infant beds and RFISs aredesigned for infants only (typically up to 30 lbs.). A Forward FacingChild Seat (FFCS) is a forward facing seating fixture designed forchildren up to 40 lbs. A Booster Seat is also a forward facing seatingfixture, but is designed for children heavier than 40 lbs. There are twotypes of booster seats: namely, booster seats that use the automobile'ssafety belt system to protect the child and simply augment the child'sposition in the seat and guide the shoulder belt into a proper position;and booster seats that are held by the automobile's belt system and havefolding arms or other methods of restraining the child.

The broad goal of occupant detection/airbag suppression systems is todistinguish between adults, for whom the airbags should deploy, andchildren, for whom they shouldn't. Accordingly, occupant classificationrequirements are based on categories of occupants. Children weighingbetween 29.5-39.5 lbs. are generally termed “3-Year Olds” (although GMincludes children up to 45 lbs.), while those weighing between 46.5-56.5lbs. are defined as “6-Year Olds” (GM includes children up to 66 lbs.).Female adults weighing between 103-113 lbs. are referred to as “5thPercentile Females” or “5th Females”. And adult males weighingapproximately 140-150 lbs. are “50th Percentile Males”. It should benoted that despite these generally accepted occupant categories,different automobile manufactures interpret and endorse variations inthe specific occupant detection requirements for their automobilesaccording to the development status and level of confidence they have inthe occupant detection technologies they have evaluated.

FIG. 1 is a graph illustrating the industry deployment and suppressioncategories for airbag suppression systems. As shown, 5th PercentileFemales and 50th Percentile Males are in the deploy section of thegraph. In other words, airbags should typically be deployed whenoccupants within either of those two categories are sensed. Thesuppression category, on the other hand, encompasses 6-Year Olds, 3-YearOlds, and all types of child seats. When an occupant of any of thesetypes is sensed, airbag deployment should typically be suppressed. Agray zone appears between the suppress and deploy zones. This gray zonerepresents a zone of uncertainty for occupants who do not clearlyregister within either the deployment zone or the suppression zone. Agray zone exists because the difference between actual weight/patterncharacteristics in an automobile seat for 6-Year Olds and 5th PercentileFemales is quite small. In other words, it is very hard to distinguishbetween 5th Percentile Females and 6-Year Olds based on their in-seatweight or pattern characteristics. Accordingly, there is very littleroom for error in occupant detection systems.

There are two common approaches to vehicle occupant detection, namely,weight-based detection and proximity detection. As its name implies, theweight-based detection approach uses the weight of the occupant in theseat for occupant classification. As will be discussed below, someconventional weight-based detection systems are strictly weight-basedwhile others employ pattern-based occupant recognition of various typesas well.

Because of the obvious physical differences between 5th PercentileFemales, 6-Year Olds, and car seats, it might be fairly easy todistinguish between them in some applications. On the surface,therefore, it might appear that distinction between them as vehicleoccupants should not be terribly difficult. Unfortunately, however, asthe following table, Table 1, illustrates, distinguishing between theseoccupant categories is a very challenging undertaking. TABLE 1 TypicalIn-Seat Weights of Vehicle Occupants Occupant-Type Typical Weight inAutomobile Seat 5th Percentile Female 75 lbs. 6-Year Old 65 lbs. 3-YearOld in FFCS 73 lbs.

Table 1 compares typical weights exerted in an automobile seat by anaverage 5th Percentile Female, 6-Year Old, and 3-Year Old in a forwardfacing child seat (FFCS). The similarity between these occupant-types intheir typical in-seat weights makes it extremely difficult to classifythem based solely on this characteristic. As the table indicates, only 2lbs. separates the average 5th Percentile Female's typical in-seatweight (75 lbs.) from that of the average 3-Year Old in a FFCS (73 lbs).Only 10 lbs. separates the average 5th Percentile Female's typicalin-seat weight from that of the average 6-Year Old (65 lbs.).

There are several reasons for the similarity of typical in-seat weightsbetween these occupant-types. One reason is that small children willhave most of their weight in the seat itself while 5th PercentileFemales tend to place more of their leg weight out of the seat. Anotherreason for the similarity is that the weight of the child seatcontributes to the weight measured for a 3-Year Old in a FFCS.

The problem of accurately classifying an occupant based on his or herin-seat weight is compounded as the occupant moves in the seat. This isdue to the fact that as the occupant moves in the seat, large variationsin in-seat weight might be detected. Simply using the armrest or leaningagainst the door can reduce the occupant's weight in the seat. Clothingfriction against the seat back and the angle of inclination of the seatback can also affect the amount of weight exerted in the seat. All ofthese factors make the in-seat weight of an occupant insufficient as asole source of information for occupant detection.

Accordingly, several variations in the conventional weight-basedapproach exist. A first variation is based on “A-surface” technologies.A-surface technologies typically use film-type sensors which are placedon the “A” surface (i.e., the top surface) of the seat foam, justbeneath the trim. A first of these A-surface systems uses theInstitution of Electrical Engineers (IEE) Force Sensing Resistor (FSR).The FSR is a force sensor sandwiched between two layers of polyester.The IEE FSR was originally developed by Interlink Electronics, but hasbeen licensed by IEE for automotive use. IEE had the first occupantdetection system in production for such companies as Mercedes.Unfortunately, the IEE FSR is notoriously difficult to use and suffersfrom a high degree of variation in production. Accordingly, these earlysystems are very simple single sensor designs with the sensor in thecenter of the seat, designed only to detect the presence or absence ofan occupant. The primary reason for this system is to prevent airbagdeployment for empty seats to avoid the unnecessary replacement ofexpensive airbags. There are a number of companies now developing smartairbag systems that use IEE's FSR technology. A list of these companiescan currently be found on the internet at http://www.iee.lu.

A second A-surface sensor system uses the Flexpoint bend sensor. OneFlexpoint bend sensor is described in detail in U.S. Pat. No. 5,583,476issued to Gordon Langford in December 1996. The first Flexpoint BendSensor was invented by Gordon Langford in the late 1980's and was usedin Mattel's PowerGlove for the 8-bit Nintendo system. This technologyhas been in production for the automotive industry's smart airbagsystems only since 1996, however. While the IEE sensor detects forceapplied to its surface, the Flexpoint bend sensor, when used as anoccupant detector, relies on seat foam deflection for force detection.Seat foam typically exhibits a memory, however, and therefore isn't anideal mechanical medium for a deflection sensor without its own springsystem. To overcome this problem, the Flexpoint system uses ForceConcentrating Devices (FCDs) to magnify sensor movement in the foam.Further descriptions of the Flexpoint bend sensor and its applicationscan currently be found on the internet at http://www.flexpoint.com/.

A third A-surface sensor system relies on the Delphi-Delco Bladder forforce detection. This system uses a bladder filled with silicone (or asimilar substance) and a single pressure transducer. The bladder ismounted in the bottom of the seat pan beneath the seat bottom foam.Unfortunately, this system is only able to approximate weight in theseat and cannot reliably distinguish between 6-Year Olds and 5thPercentile Females. It also cannot accurately classify tightly beltedchild seats in static (without vehicle motion) situations. This systemdoes, however, sense the motion produced by an object or occupant in theseat to aid in occupant classification. Because tightly belted childseats tend to have less free motion in the seat than live occupants,motion tracking is useful in occupant detection. Accordingly, althoughnot reliable for static situations, these systems can be used to satisfysome of the goals of occupant detection. Presently, Ford is preparing toput this type of system into production.

Each of these various A-surface sensor systems has its own advantagesand drawbacks. Each is being used by various companies in an attempt toprovide more accurate occupant detection systems. Furthermore, othertypes of weight-based detection systems continue to be developed.

Seat Frame Systems provide another variation to weight-based occupantdetection. Several companies, like TRW Inc. (TRW), have mounted loadcells at the base of the seat frame to measure weight in the seat.Unfortunately, these seat frame systems can only estimate occupantweight based on the weight exerted in the seat. Furthermore, thepresence of floor-anchored seat belts complicates decisions for thesesystems. Frame-based systems are, however, fairly good at detectingshifts in weight in the seat during vehicle motion.

Proximity detection offers an alternative to weight-based detection as away to identify vehicle occupants. Proximity detection is based on theconsideration that the danger of injury or death resulting from airbagdeployment is directly related to the distance of the occupant from theairbag. In other words, the closer the occupant is positioned to theairbag, the greater the risk of injury from its deployment. One reasonwhy small females are particularly at risk, for example, is because theytend to position their seats closer to the dashboard or steering columncontaining the airbag. Accordingly, proximity detection systemsgenerally use a combination of ultrasonic and infrared sensors tomonitor a region in the airbag deployment path. If an object is in thispath, they may elect to disable the airbag. A drawback of proximitydetection systems is that they generally have difficulty making theappropriate deployment decision when books, pillows, newspapers, orother objects are held in front of the occupant. Proximity detectionsystems also frequently have difficulty detecting child seats.Presently, many companies, such as Siemens, TRW, and Bosch, are workingon proximity detection systems.

Each of the occupant detection systems described above requires softwareto translate the information received from the sensors into useable datafor occupant classification. Unfortunately, no one has yet been able toprovide a hardware/software combination capable of meeting all of theNHTSA's proposed requirements. None of the known occupant detectionsystems currently in existence are able to accurately distinguishbetween 5th Percentile Females and 6-Year Olds.

Accordingly, a need remains for a more accurate way to detect anoccupant of a vehicle seat, and to discriminate more precisely amongoccupants of different size/weight characteristics.

SUMMARY OF THE INVENTION

One object of the present invention is to enable a vehicle occupantdetection system to classify vehicle occupants accurately.

Another object of the present invention is to enable a vehicle occupantdetection system to distinguish accurately between 5th PercentileFemales and 6-Year Olds.

Another object of the present invention is to provide an airbagdeployment system that makes a suppress or deploy decision based on anaccurate identification of a vehicle occupant.

The vehicle occupant classification system of the present inventionprovides a significant improvement in the art by classifying seatoccupants based on sensor data from a calibrated array of sensors usinga combination of weight estimation, pattern recognition, and statisticalevaluation. The occupant classification results can then be used to makean appropriate airbag deployment state decision. The major modules ofthis system can include a calibration unit, a weight estimation module,a pattern module, and a decision-making module.

The Calibration Unit receives sensor data from a sensor mat subjected toa calibration force during a calibration process. The purpose of thecalibration process is to normalize sensor deflections across the mat tocompensate for variations in sensors and for effects of the seat trimand foam on sensor characteristics. Calibration data from thecalibration process is stored for use by the other system components.

The Weight Estimation Module uses the calibration data to translate eachsensor's deflection reading (sensor data) due to a seat occupant into arelative deflection value (Sensor DU). The Weight Estimation Module alsocombines the relative deflection values (Sensor DUs) from all of thesensors to produce a system deflection value (RawDU).

The Pattern Module receives occupant sensor data directly from thesensor mat, and also receives pre-processed data from the WeightEstimation Module. The Pattern Module uses both data inputs to look fortraits in the pattern of sensor deflections that are common for objectsother than people (also called “live” occupants). The Pattern Module canlook for edge deflections and other pattern traits to help identifynon-live occupants. The Pattern Module can then modify the RawDU fromthe Weight Estimation Module to produce a final Decision DU based on thepattern traits it identifies. The Decision DU and pattern informationfrom the Pattern Module are sent to the Decision-Making Module for usein the deployment decision-making process.

The Decision-Making Module makes a final airbag deployment statedecision by analyzing trends in the deflection values, which areindicative of occupant weight and movement, and in the patterninformation. When the deployment status is placed into a deploy state,the airbag will deploy during impact. In a suppress state, however,deployment of the airbag will be prevented. The Decision-Making Modulecan include various security features to prevent modification of thedeployment status if the state-change decision is based on unreliabledata.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, features, and advantages of theinvention will become more readily apparent from the following detaileddescription of a preferred embodiment of the invention which proceedswith reference to the accompanying drawings, in which:

FIG. 1 is a chart illustrating the desirable deploy and suppress zonesfor a smart airbag system.

FIG. 2 is a block diagram illustrating a vehicle occupant classificationsystem according to a preferred embodiment of this invention.

FIG. 3 is a schematic plan view of a sensor array configuration for usewith the occupant classification system of FIG. 2.

FIG. 4 is a schematic cross-sectional view of a bend sensor with a ForceConcentrating Device (FCD) capable of use in the sensor array of FIG. 3.

FIG. 5 is a schematic cross-sectional view of a vehicle seatillustrating the effect of shifting occupant positions on occupantdetection, and further showing how the selection of planes defined bysensor sensitivities affects the accuracy of the occupant classificationsystem of FIG. 2.

FIG. 6 is a schematic diagram showing the results of a calibrationprocess on sensor sensitivities in the occupant classification system ofFIG. 2.

FIG. 7 is a schematic cross-sectional view of a swivel pad and its forceprofile as used in one embodiment of the calibration process of theoccupant classification system of FIG. 2.

FIG. 8 is a schematic plan view of a sensor mat indicating variouspositioning of small bladders as used in another embodiment of thecalibration process of the occupant classification system of FIG. 2.

FIG. 9 is a schematic cross-sectional view taken along lines 9-9 of FIG.8 of a small bladder and its force profile.

FIG. 10 is a graph illustrating the effects on sensor deflectionresulting from positioning the small bladders of FIG. 8 in variousvertical alignments.

FIG. 11A is a schematic plan view of a large bladder positioned over thesensor mat of FIG. 3 in a preferred embodiment of the calibrationprocess of the occupant classification system of FIG. 2.

FIG. 11B is a schematic side view of the large bladder of FIG. 11A.

FIG. 12A is a schematic top plan view of a vehicle seat showing atypical deflection pattern of a 5th Percentile Female.

FIG. 12B is a schematic cross-sectional side view of the vehicle seat ofFIG. 12A taken along line 12B-12B.

FIG. 13 is a block diagram of a calibration unit of the occupantclassification system of FIG. 2.

FIG. 14 is a flow diagram of the calibration process in the calibrationunit of FIG. 13, illustrating the data inputs into the calibration unit,the data processing which takes place within the unit, and the dataoutputs from the unit.

FIG. 15 includes two flow diagrams illustrating an overall calibrationprocess for a single sensor at a time and an overall calibration processfor all sensors at a time for use in the calibration unit of FIG. 13.

FIG. 16 is a flow diagram illustrating the basic steps of the weightestimation process performed by the weight estimation module of theoccupant classification system of FIG. 2.

FIG. 17 is a block diagram illustrating the weight estimation module andthe pattern module of the occupant classification system of FIG. 2, andthe transfer of data into and between them.

FIG. 18 is a flow diagram illustrating a process for calculatingrelative sensor deflection values (Sensor DUs) in the weight estimationprocess of FIG. 16.

FIG. 19 is a Ledge Curve for a given sensor in the sensor array of FIG.3, defined by calibration data received from the calibration unit ofFIG. 14, and used in determining Sensor DUs through interpolation asillustrated in FIG. 18.

FIG. 20 is a block diagram illustrating the formation of a Sensor DUArray from the Sensor DUs of FIG. 18 using a Raw Sensor Array and thecalibration data from the calibration unit of FIG. 14.

FIG. 21 is a block diagram illustrating the conversion of the Sensor DUArray of FIG. 20 into an Averaged Array.

FIG. 22 is a graphical comparison illustrating how grayscaling can beused to provide consistent pattern images regardless of absolute in-seatweights.

FIG. 23 is a graph illustrating the same basic grayscaling technique ofFIG. 22 but using a different scale for grayscaling.

FIG. 24 is a schematic flow diagram illustrating the creation of a RawGrayscale Array.

FIG. 25 includes schematic diagrams illustrating the use of the RawGrayscale Array of FIG. 24 in detecting orphan sensor deflections duringan Orphan Filter Test.

FIG. 26 is a schematic diagram illustrating deflection characteristicsof seat foam.

FIG. 27 is a schematic diagram showing the Pattern Mask and PatternFlags.

FIG. 28 is a schematic flow diagram illustrating the creation of anAveraged Grayscale Array.

FIGS. 29A-29D are schematic illustrations of the Averaged GrayscaleArray of FIG. 28 showing various regions used in performing variouspattern tests in a Pattern Module of the Occupant Classification Systemaccording to various embodiments of this invention.

FIGS. 30A-30G are schematic diagrams of the Raw Grayscale Array of FIG.24 illustrating how the Raw Grayscale Array can be used to performvarious filter tests to identify patterns in the Pattern Module of theOccupant Classification System according to various embodiments of thisinvention.

FIG. 31 is a schematic flow diagram illustrating the application ofcontext filter settings during pattern evaluation.

FIGS. 32A and B are schematic diagrams of the Averaged Grayscale Arrayof FIG. 28 illustrating the use of a Thin/Wide occupant classificationtechnique.

FIG. 32C is a schematic flow diagram illustrating the basic Thin/Widestatistical collection operation according to an embodiment of thisinvention.

FIGS. 33A and 33B provide a schematic comparison of the relativefunctions of the Thin/Wide and ScatterCount statistical collection andpattern evaluation approaches.

FIG. 34 is a schematic flow diagram of the ScatterCount occupantclassification approach according to another embodiment of thisinvention.

FIG. 35 is a schematic flow diagram illustrating the inputs into theDecision-Making Module's decision process.

FIG. 36 is a graph illustrating a decision process of theDecision-Making Module over time for a typical adult.

FIG. 37 is a graph illustrating the decision process of theDecision-Making Module over time for a typical 5th percentile female.

FIG. 38 is a graph illustrating the decision process of theDecision-Making Module over time for a typical 6-year old.

FIG. 39 is a graph illustrating the decision process of theDecision-Making Module over time for a car seat.

FIG. 40 is a flow diagram illustrating frame processing for updating thestatistics for a current second.

FIG. 41 is schematic diagram illustrating the updating and use of theHistory FIFO.

FIG. 42 is flow diagram illustrating methods for pattern andweight-based motion detection during the decision process.

FIG. 43 is a flow diagram illustrating a method for detecting whetherthe seat is occupied or empty during a decision process.

FIG. 44 is a flow diagram illustrating the timing of the system's frameand decision processes performed for the occupant classification systemof FIG. 2.

FIG. 45 is a detailed flow diagram of the frame processing anddecision-making components based on the occupant classification systemof FIG. 2.

FIG. 46 is a block diagram illustrating the updating of a frame summaryin the frame processing of FIG. 45.

DETAILED DESCRIPTION

FIG. 2 is a block diagram illustrating the major components of theVehicle Occupant Classification System (classification system) 55according to a preferred embodiment of this invention. Theclassification system 55 combines weight estimation, patternrecognition, and statistical evaluation of in-seat characteristics of anoccupant in order to make an informed airbag deployment state decision.Referring to FIG. 2, the major components of the classification systeminclude a Calibration Unit 100, a Weight Estimation Module 200, aPattern Module 300, and a Decision-Making Module 400. Using these threecomponents, the classification system of this invention is able toaccurately detect a vehicle occupant and appropriately determine aproper airbag deployment state based on that occupant's in-seatcharacteristics.

The Calibration Unit 100 receives sensor data from a sensor mat 50,located in the vehicle seat, during a calibration process. The purposeof the calibration process is to normalize sensor deflections across themat 50 to compensate for variations in sensors and for effects of theseat trim and foam on sensor characteristics. Calibration data from thecalibration process is stored in an ECU EEPROM 150 for use by the othersystem components.

The Weight Estimation Module 200 uses the calibration data stored in theEEPROM 150 to translate each sensor's current deflection reading (rawsensor data), corresponding to a vehicle occupant, into a relativedeflection value (Sensor DU). The Weight Estimation Module 200 alsocombines the relative deflection values (Sensor DUs) from all of thesensors to produce a system deflection value (RawDU).

The Pattern Module 300 also receives the raw sensor data 204 directlyfrom the sensor mat 50 and, in addition, receives pre-processed datafrom the Weight Estimation Module 200. The Pattern Module 300 uses bothdata inputs to look for traits in the pattern of sensor deflections thatare common for objects other than people. People are soft and conform tothe seat while child seats are rigid and create edge deflections. Edgedeflections generally cause a number of pattern traits in a seat bottom,no matter how much weight is in the seat, that help distinguish betweencar seats and people. The Pattern Module 300 looks for these edgedeflections, as well as other pattern traits, to help identify non-liveoccupants. The Pattern Module 300 can then modify the RawDU from theWeight Estimation Module to produce a final Decision DU based on thepattern traits it identifies. The Decision DU and pattern informationfrom the Pattern Module 300 are sent to the Decision-Making Module 400for use in the deployment decision-making process.

Finally, the Decision-Making Module 400 makes an airbag deployment statedecision by analyzing trends in the deflection values. For example, theDecision-Making Module 400 reviews past versus current Sensor DUs andDecision DUs, in order to evaluate occupant weight and movement. TheDecision-Making Module 400 also reviews the pattern information (i.e.,pattern statistics, current pattern status, pattern size, and locationin seat) to make a deployment state decision. When the Decision-MakingModule 400 places the deployment status into a deploy state, the airbagwill deploy during impact. In a suppress state, however, deployment ofthe airbag will be prevented. The Decision-Making Module 400 includesvarious security features to prevent modification of the deploymentstatus if the state-change decision is based on unreliable data.

FIG. 3 schematically illustrates a sensor array (or mat) 50 that can beused with the classification system of this invention. Specifically,FIG. 3 shows the orientation and relative positions of the sensors inthe seat. Each of the sensors is assigned a number #1 through #28.Consistent sensor numbering is important because each sensor's locationin the seat plays an important role in the system 55. This is becausedifferent sensor quadrants, or even different individual sensors, may beaccorded varying significance. Additionally, seat components affectsensors differently across the seat and may require some form ofcompensation. Finally, the sensor numbering system is used throughoutthe algorithm and in the tools as a means of referring to specificsensors. All seats must therefore use the same numerical sensor layoutfor the algorithm to work across the various seat-types. If a given seatuses fewer sensors (e.g., only two on a bolster), then the missingsensor number(s) will be skipped and not used for that seat.

The preferred occupant detection classification system 55 of thisinvention has been optimized to use a bend sensor array with up totwenty-eight sensors, but could easily be adapted to other sensor typesor arrangements. Each bend sensor can be constructed, for example, witha strip of conductive ink having varying resistivity as it is bent. FIG.4 schematically illustrates an individual bend sensor both in a flat,“at rest” state, and in a deflected state. The bend sensors lie on topof the seat foam, under the upholstery. A force concentrating device(FCD) is placed directly over the center of the sensor. When an occupantsits in the seat, the occupant applies force to the FCD, around whichthe sensor ink bends. The bending of the sensor causes a relativeincrease in resistance in the ink, which is converted into a numericalvalue by an analog-to-digital converter and then reported to theclassification system 55 as sensor data 104. A preferred embodiment usesa bend sensor array with twenty-two total sensors (sensors ##1-22)embedded in the seat of a vehicle. The electronic circuitry in which theclassification system is implemented supports up to thirty-two sensorinput lines, or channels, from the sensor array 50.

Referring to FIG. 3, as noted previously, each sensor in the array 50 isassigned a unique sensor ID number, for example, such as from #1 to #28.A single frame of data coming into the classification system includes adata value for each of the sensors. Accordingly, a frame fortwenty-eight sensors has twenty-eight bytes of sensor data. Thenumerical orientation of the sensors is very important because theclassification system 55 relies on the position of each sensor in theseat in processing the sensor data and making a deployment decision. Thesoftware can also compensate for some degree of sensor movement in theseat when the sensors are correctly numerically oriented.

The sensors are numbered row to row, starting in the right back cornerof the seat bottom. This numbering system results in five rows and sixcolumns. The bolster sensors, located in the first column and the sixthcolumn, are used primarily to track an occupant when they sit on thesides of the seat. The center, however, is the most reliable area toperform occupant classification because it is relatively flat comparedto the bolsters. Although sensors #23-#28 are not used in the presentlypreferred embodiment, they are available for future implementations.

An occupant sitting in a seat fitted with the sensor mat 50 of FIG. 3will create a deflection pattern that can be categorized into variouslevels. For a “live” occupant, as opposed to a car seat, the greatestsensor deflections will generally be centered directly under theoccupant, with secondary and peripheral deflections radiating outward.Tight upholstery can cause peripheral deflections to extend well beyondthe actual edge of the occupant. Peripheral deflections must beaccounted for or they might confuse the classification system.Incidental deflections might also confuse the system if not properlyaccounted for. Incidental deflections can be caused by creases and seamsin the seat upholstery, stuck sensors, heater wires in the seats, and soon. An important role of the Weight Estimation Module 200 is to filterout incidental and peripheral sensor deflections.

A seat occupant or object creates a displacement in the seat foam. Thesensor mat deflection pattern measures this displacement. As theoccupant moves in the seat, the deflection pattern can changeconsiderably for several reasons. FIG. 5 illustrates a seat occupantsituated in two possible body positions and shows how deflectionpatterns can change based on the occupant's position within the seat.Referring to FIG. 5, first, although it is common for thecenter-of-gravity of an occupant's torso to be at the center of thedeflection pattern, people are very flexible and can change theirdeflection pattern and its relation to their center of gravity just byaltering the curve in their spine, the rotation or angle of their hips,or even their head position. Even when an occupant is just leaningagainst the door, for example, the deflection pattern will change.Accordingly, an occupant can sit with different body positions in theseat, causing the center of the deflection pattern either to be found indifferent areas of the seat, or to be rotated relative to the seat back.A few of the many possible positions include centered, left side of seat(outboard), right side of seat, rotated clockwise, etc.

Leg position and leg length also impact the deflection pattern. A 5thPercentile Female with short legs, for example, will typically have moreof her leg weight in the seat. A 5th Percentile Female with longer legs,however, will have her knees higher and less of her leg weight in theseat. Leg position and length have additional significance whenattempting to distinguish between children and adults. This is becausechildren generally cannot reach their feet to the floor when seated andtherefore have nearly their entire body weights in the seat. Smallfemale adults, on the other hand, generally have their feet on the floorto support some portion of their body weights. Accordingly, the actualdifference in weight on the seat surface between a 5th Percentile Femaleand a child may be negligible.

Additionally, many seat bottoms can be raised, lowered, or even tilted,all of which can change the amount of contact between the seat and theoccupant as well as the likely location of the occupant's center ofgravity in any given sitting position. Changing the seat-back angle alsohas a significant impact on the deflection pattern, and in some casescan either increase or decrease the available surface area of the seatbottom. Furthermore, a seat bottom typically has a complex surface areacreated by the foam and upholstery. Seams, trenches, bolsters, andheaters can all cause differences in sensor deflections across a seat'ssurface. The existence of some of these can also affect final sensorspacing and sensor-to-bus anchor points in the mat design, both of whichcan impact the meaning of deflections from different seat areas.

To help maintain a consistent deflection pattern, the classificationsystem tries to define an absolute plane in the seat's foam. Anydisplacement below this plane may contribute to the system. The seatcalibration system described below is used to define this plane. Threepossible planes are illustrated in FIG. 5, including a shallow plane 71,a deep plane 73, and a centered plane 72. Referring to FIG. 5, if theplane is too shallow, as is the shallow plane 71, the deflection imagewill change very little across occupants of different weights. Morespecifically, a shallow plane 71 will make all occupants appear largeand will result in an unfocused pattern image.

If the plane is too deep, however, some occupants won't be acknowledgedand for others, the deflection pattern will be unreliable. Furthermore,a deep plane 73 shows dramatic change when the weight of an occupantshifts in the seat. A centered plane 72 will be less affected by weightshifts and will help to accurately classify occupants of all types. Thefollowing classification system components ensure that an appropriatedisplacement plane is defined and that different occupants can beadequately distinguished regardless of their position and movement inthe seat.

Calibration

Referring back to FIG. 2, the first classification system component isthe Calibration Unit 100. There are three primary goals for theCalibration Unit 100. The first primary objective is to normalize sensorsensitivity variations across the seat. The second primary goal is tooptimize sensor sensitivity thresholds for border requirements (i.e.,for distinguishing between 5th Percentile Females and 6-Year Olds). Thefinal primary goal is to make patterns in seats predictable regardlessof seat or sensor variations. Furthermore, although not a primary goalof the algorithm, the calibration process also acts as a test forsensor, installation, and seat assembly problems in production. Forinstance, there are several component and construction problems that canbe detected during calibration, including flipped sensors. Thecalibration equipment can also be used for tightly controlledenvironmental testing in which a fixed force is applied to study theeffects of temperature and humidity.

Once a sensor mat 50 (see FIG. 3) has been assembled into a seat, sensorsensitivities will vary across the seat due to both sensor variationsand features of the seat bottom. The calibration process is designed tocompensate for variations in sensor sensitivity due to both sensormanufacturing inconsistencies and the effects of the seat trim, foam,heaters, or other seat variations. The calibration process accomplishesthis by normalizing sensor deflections and sensitivity within a singleseat and also by allowing variations across seats to be controlled. FIG.6 is a schematic diagram showing natural variations between sensors inresistance difference calculations (calibration deltas or CalDeltas)when a fixed deflection force is applied, and the normalized sensoroutput (calibration deflection units or CalDUs) from the CalibrationUnit.

The calibration process can be done one sensor at a time, to multiplesensors at a time, or to all sensors at the same time (seat-wide).Calibration is achieved by measuring each sensor's “at rest” or baselinevalue (Baseline) and then physically loading each sensor in the systemwith a known deflection or calibration force. The sensors' baseline(Baseline) and deflected values (Calibration Deltas) due to thecalibration force are then used to normalize relative sensor variationsas discussed in further detail below. By normalizing relative sensorvariations, calibration allows each seat to achieve a predictableperformance level in production.

Although calibrations can be performed by hand after collectingperformance data (e.g., by scrutinizing each seat's performance sensorby sensor and adjusting individual gains for each sensor based onobservation), this approach is difficult and time consuming. The use ofa swivel pad 80, such as the one shown in FIG. 7, is a way to performautomated calibrations. Automated calibrations can be performed withswivel pads 80 having, for example, a 1.25″ radius. Calibration usingswivel pads 80 has a major problem, however-registration. Registrationrefers to the force transfer between the pad (foot) 82 and the sensor52. As registration of the pad with the sensor FCD varies, so does thedeflected value of the sensor.

As the force profile graph at the bottom of FIG. 7 shows, the forcetransfer profile of a swivel pad 80 is non-uniform, with the outer ringof the pad 82 deflecting the seat trim 64 far more than the center. Thiseffect is called an edge deflection, and is typical for any rigid bodypressed into the seat trim. As further evident from the graph at thebottom of FIG. 7, larger pads will have still wider force profiles andwill therefore produce even less deflection at the center. These issuesmake the swivel pad 80 less desirable for calibration.

Another issue involved in seat sensor calibration is hysteresis of theseat foam 66. The seat foam 66 generally has at least some degree of“memory” and will therefore not return immediately to its originalposition. Three effects of seat foam hysteresis are particularlyimportant to calibration using swivel pads 80. First of all,repeatability is difficult because the foam must “recover” between theapplication of significant forces. Second, variations in approach speed(i.e., the speed at which the foot 82 impacts the seat surface 62 whenapproaching the deflection force) can change the results measured at thedeflection force. Finally, when approaching the target deflection forceto take a reading, results will differ depending upon whether it isapproached from a greater or a lesser force. Variation between sensors52 and the non-linear change in resistivity of bend sensors, such assensor 52, when differing forces are applied also affect the calibrationprocess.

To solve the swivel pad problems of registration and edge deflection,calibration fixtures can instead be fitted with under-inflated airbladders. FIG. 8 is a schematic top view of a seat including a sensormat 50 showing the positioning of small bladders 90, 90A, 90B over asensor 52. Sensor 52 is one of an array of elongate sensors, extendingfingerlike from a common bus 54. FIG. 9 is a cross-sectional side viewof the seat 60 taken along line 9-9 of FIG. 8 showing the small bladder90 in position over the sensor 52. Although round Mylar balloons can beused for the small bladders 90, small, custom-made, nylon bladders,approximately 8″ across are preferred. These bladders 90 areunder-inflated (measured by volume) to help them conform to the surfaceof the seat. Under-inflation is especially important for seat bolstersthat have complex surface angles. Small bladders 90 have a bettertolerance to registration than the swivel pads 80. FIG. 9 includes aforce-profile graph illustrating the improved force profile of a smallbladder 90 as compared to a swivel pad 80.

As shown in FIG. 9, the force profile of a small bladder 90 is moreuniform across the sensor 52 than that of the swivel pad 80. A bettercalibration can therefore be achieved using small bladders 90 than theswivel pads 80. It should be noted, however, that the relationshipbetween the location of the small bladder 90 to the verticalanchor-point 94 of a sensor strip and the relative force exerted to thefront versus the back of the FCD are additional factors that should beconsidered when using small bladders 90 for calibration.

FIG. 8 shows three small bladder locations 90, 90A, 90B with differentvertical alignments. The vertical alignment of each small bladder 90,90A, 90B is its position relative to the vertical anchor 94 of thesensor strip. Different vertical alignments result in different sensordeflections. The variation in sensor deflection depending on verticalalignment appears to be related to the vertical anchor 94 of each sensorstrip, which is the point at which each sensor strip joins the main bus.FIG. 10 shows the effect of varying vertical (front-to-back) alignmentof the small bladder 90 with respect to the vertical anchor 94.

As evidenced by the graph in FIG. 10, when the vertical anchor islocated behind the sensor (i.e., nearer the seat back), deflection ofthe sensor will be greatest when the small bladder 90 is positionedslightly behind the sensor (i.e., nearer the seat back, similar tobladder 90A). This is due to the fact that the sensor deflection peaksbefore the bladder alignment is centered over the FCD when moving frombehind (nearer to the seat back) the FCD to in front of the FCD. If thevertical anchor were forward (nearer the seat front) of the FCD in theseat, as indicated by the dashed lines in FIG. 10, this relationshipwould be reversed.

Although small bladders 90 can be used for calibration, a large,conforming bladder 95, such as the one shown in FIGS. 11A and 11B, ispreferred to enable calibration of the entire seat at once. Using asmall bladder 90 for calibration is impractical in high volumeproduction because of how long it takes to calibrate an entire seatsensor array one sensor at a time. Although simultaneous calibration ofseveral non-adjacent sensors using small bladders 90 could be done toreduce the calibration time for the whole seat, using a large bladder 95is preferred. Nonetheless, validation with small bladders 90 first (onesensor at a time) helps during development to make sure that all knownproblems are resolved before using a large bladder 95.

As suggested above, the most preferred calibration method uses a largeunder-inflated air bladder 95. Under-inflation allows the bladder 95 toconform to the seat bottom contours and to apply a calibration forceevenly across the seat surface. FIGS. 11A and 11B illustrate use of alarge bladder 95 in a calibration process. As shown, the bladder 95 islarge enough to completely cover the sensor matrix in the seat 60. Aplate fixture 97 is attached to the bladder 95 to apply an even forceacross the bladder 95. This allows calibration of the entire seat sensorarray 50 at the same time.

A large bladder system 95 is preferable to the other calibration methodsbecause it has a much smaller susceptibility to registration problemsfor the individual sensors and because the process of using it isextremely repeatable from one calibration to the next on the same seat.In addition, use of the large bladder system 95 has several otherfundamental benefits. For example, a very consistent calibrationfootprint is applied across different seats using this system, reducingadverse effects of assembly tolerance stack-ups. Also, the whole seatcan be calibrated very fast with very little edge effect. Furthermore,the bolster angle is less of an issue than with the vertically appliedsmall foot 82 or bladder 90.

There are several key design considerations and issues for calibrationusing the large bladder system 95. First, the bladder 95 should bepliable enough, when under-inflated, to allow conformance to the seatsurface during inflation to the target pressure. Also, the bladdermaterial should not have friction with seat material (i.e., it mustslide easily) to maximize conformance to the seat surface. The bladderdepth should be sufficient to allow downward pressure to be applied tothe seat during inflation (not just horizontal expansion of thebladder). The bladder 95 also should not wrap around (i.e., hang off)the seat in areas close to the sensors. Use of a support plate at theback of the seat is recommended.

The volume of air in the bladder 95, the pressure within the bladder 95,and the effects of temperature and barometric pressure are alsoimportant factors. Consideration must therefore be given to choosing anoptimal pressure and volume of the bladder 95, as well as to therelationship of bladder pressure and volume to the optimal pressureapplied to each sensor. It may also be desirable to build walls toconstrain the bladder 95, causing inflation primarily downward towardthe seat. With these considerations in mind, it is possible to configurea large bladder 95 which works well in calibrating the sensors for theclassification system.

Different calibration methods can be used with a large bladder system95. One calibration method simply applies a single target force to theseat 60 and then collects values from all sensors in the sensor matrix50. A more reliable method collects sensor values at two or more targetforces, thereby allowing a force curve to be developed for each sensor.Currently, a rapid sampling approach is being developed that willcollect data at sixty times a second from each sensor as the calibrationforce is slowly applied until it reaches a target. This yields a veryhigh-resolution image of each sensor's performance for study andcalibration.

Using the large bladder or “Big Bag” Calibration fixture 95, a largestudy of car seats with seat sensors was conducted. Each seat had sensordata collected at intervals from 0.60 psi (internal bag target pressure)to 1.20 psi. Some important sensor behaviors were learned from thisstudy.

1. An analog sensor's performance in a car seat is influenced by:

-   -   a. Sensor position in seat (where it is in the matrix).    -   b. Seat construction (seat trim, foam, and contour).    -   c. Sensor sensitivity (production variation).

2. When using this type of calibration fixture there is a minimum forcewhere each sensor begins to track its calibration force curve(calibration pressure to sensor value). Forces up until this point aresimply compressing the foam and trim and can actually make some sensorsdecrease in value.

3. Sensor production variation can affect the slope and shape of thecalibration force curve.

For sensors that produce a relatively linear response, a “dual point”calibration technique has proven to be very reliable. The basic dualpoint calibration technique is as follows:

1. Determine safe minimum and maximum calibration force range given aknown sensor variation. The most important sensor variation at thispoint is minimum sensitivity, because sensors that are too insensitivewill yield a very low and flat calibration force curve.

2. Use the “safe” min/max calibration forces to estimate each sensor'sslope in the seat matrix.

3. Use each sensor's slope to calculate its calibration value at anideal threshold force (typically optimized for 5th female detection).The slope can also be used to calculate any of the “ledge” calibrationvalues for each sensor.

Sensors that produce non-linear calibration force curves simply use anextension of the dual-point approach, called a multi-point approach. Inthe multi-point calibration technique, enough calibration target forcesare used to yield a good estimation for each sensor's curve. Thiscollection of points are then used to estimate calibration values byinterpolating between calibration values depending on the target forcefor estimation.

Regardless of what type of calibration instruments are used, it isdesirable for the calibration process to focus sensor sensitivity on themost difficult classification zones. This is done by using a deflectionforce representative of the desired occupant-type. FIGS. 12A and 12Billustrate a typical deflection pattern for a live occupant in a vehicleseat 60. More specifically, FIG. 12A is a top plan view of the seat 60showing a typical deflection pattern of a 5th Percentile Female, whileFIG. 12B is a cross-sectional side view of the seat 60 taken along line12B-12B in FIG. 12A. Referring now to FIGS. 12A and 12B, there are twomain regions of deflection seen by the classification system when theseat is occupied by a live occupant (as opposed to a car seat or otherobject). The primary deflection region 68 is the center of the liveoccupant's deflection pattern in the seat 60 and has the greatest load.The secondary deflection region 69 is typically a ring around theprimary deflection region 68 typified by lower loads.

To distinguish effectively between occupants in or near the gray zone ofthe deployment graph of FIG. 1, the calibration process 100 of apreferred embodiment of this invention focuses the classification system55 on the typical deflection pattern of a 5th Percentile Female.Specifically, the calibration force(s) is (are) chosen to represent thetarget weight and deflection pattern of a 5th Percentile Female. In thisway, the calibration process optimizes detection of the 5th PercentileFemale's secondary deflection forces by focusing sensor sensitivity onthose forces. A properly calibrated seat system, therefore, will haveits Weight Estimation Module 200 centered around a 5th PercentileFemale's secondary deflection region and will be relatively tolerant asthe system becomes more or less sensitive from environmental changes orvariations in occupant weight and position.

FIG. 13 illustrates the basic components of the Calibration Unit 100. Asshown in FIG. 13, there are two basic components (preferably embodied insoftware) provided by this invention for enabling production anddevelopment calibrations that achieve the desired system focus. Thesecomponents include a Calibration DLL 102 and one or more CalibrationTemplate Files 106. The Calibration DLL 102 of this embodiment is astandard Microsoft Windows dynamic-link library (DLL) which may be usedby any compatible calibration system. The Calibration DLL 102 containsthe error-checking software and generic calibration algorithm toformulate a calibration. Each Calibration Template File 106A, 106B, 106Cis a data file containing specific calibration information(parameters—i.e., variable values and ranges) for a given platform (alsoreferred to as seat-type or seat model). The Calibration DLL 102receives, as one of its inputs, the Calibration Template File 106A,106B, or 106C for the platform being calibrated.

The calibration information in the Calibration Template File can includevarious calibration data values, such as Baseline Range, CalPos Range,CalDelta Range, Gain, DeltaFilterPercent, MaxDeltaPercent,LedgeDeltaPercent, DeltaFilterMin, MaxDU, CalDU, and LedgeDU. Values forselected ones of these variables for the given platform are suppliedfrom the Calibration Template File 106 to the Calibration DLL 102 toenable it to perform the calibration process. Each of these variableswill be described in further detail below.

It should be noted that each of the ranges, percentages, or values(collectively, “variables”) used in the calibration process can becustomized for the particular seat-type being calibrated. Furthermore,each of the variables can be further individualized for each of theindividual sensors in a production environment. For example, each of thetwenty-two sensors #1-#22 in a sensor mat 50 (see FIG. 3) could haveunique calibration information supplied by the Calibration Template File106, allowing each of the different zones of the seat to have their owntest parameters. The Calibration DLL 102 uses these variables forperforming the calibration process. To perform the calibration process,the Calibration DLL 102 also receives sensor data 104 from the sensors,including each sensor's Baseline and CalPos values.

The seat calibration process using a single sensor will now be describedwith reference to FIG. 14, which contains a block diagram of theCalibration Unit 100, including a flow diagram of the operation of theCalibration DLL 102. The same general process described below alsoapplies when all of the sensors are calibrated simultaneously. The firststep in the calibration process is to measure the sensor's Baselinevalue. A sensor's Baseline value is its “at rest” (i.e., no load) valuein the seat. The Baseline is sent to the Calibration DLL 102. Errorchecking proceeds in the Calibration DLL 102, during the Range Baselinestep 110, by comparing each sensor's Baseline against the Baseline Rangefrom the Calibration Template File 106.

The Baseline Range contains minimum and maximum Baseline values for thespecific sensor being sensed in that particular seat-type. If theBaseline is higher than the maximum allowable value, a build problem isvery likely causing the sensor to be pre-loaded. If, on the other hand,the Baseline is lower than the minimum allowable, the sensor may be bentbackwards or shorted to ground.

The second step of the calibration process is to apply a calibrationforce to the sensor and measure it's deflected value. CalPos is thedeflected value of the sensor when the calibration force is applied toit. Error checking at this stage proceeds in the Range CalPos step 112of the Calibration DLL 102 by comparing each sensor's CalPos valueagainst minimum and maximum allowable values (CalPos Range) from theCalibration Template File 106, to detect any sensor or build problems.In addition, a good calibration will always have a CalPos value greaterthan the Baseline value. Each sensor's CalPos value is therefore alsocompared against its Baseline value. If the Baseline value is greaterthan the CalPos value, the sensor may be inverted in the seat. Thecalibration process then calculates the sensor's difference (Delta)value. The Delta value is calculated during step 114 in the CalibrationDLL 102 by subtracting the Baseline value from the CalPos value. Deltais representative of an amount of change that the sensor exhibits whendeflected with the calibration load and should be a positive value.

Next, the calibration Gain is used to scale the Delta value higher orlower, as desired, during step 116 in the Calibration DLL 102.Performing a Gain calculation allows a greater than ideal calibrationforce to be used, thereby improving the chances of getting good Deltavalues from seat types which have sensor sensitivity problems resultingfrom seams, seat heaters, or foam contours, for example. A preferredcalibration process for a Cadillac seat, for instance, scales the Deltavalue to 75% of its original value. In the present embodiment, the Gainis linear, scaling all of the Delta values by the same amount. Otherembodiments, however, may use non-linear scaling. The result fromapplying the calibration Gain to the raw calibration Delta value is acalibration delta value, CalDelta.

Error checking for the scaling step proceeds during step 118 in theCalibration DLL 102 by comparing each CalDelta (post-gain calculation)against a minimum and a maximum value obtained from the CalDelta Range.If CalDelta is below the minimum value, the sensor has not had a goodcalibration. If CalDelta is higher than the maximum value, on the otherhand, there may be a build problem or the sensor may be damaged. Itshould be noted that although the CalDelta value is currently testedafter scaling (post-gain calculation), this test could just as easily beapplied to the raw Delta value before the Gain calculation (pre-gaincalculation). Doing it after the gain calculation, however, adds morevalue to the test within the context of the preferred algorithm.

After the raw Delta value is scaled to obtain the CalDelta value, theCalDelta value is filtered during step 120. DeltaFilterPercent is thepercentage of the CalDelta taken to obtain a DeltaFilter value accordingto the equation:DeltaFilter=(CalDelta*DeltaFilterPercent)/100The DeltaFilter value obtained from this calculation is compared to aminimum DeltaFilter value, DeltaFilterMin during step 122.DeltaFilterMin is the smallest value allowed for a DeltaFilter for thatsensor in that particular seat-type. The provision of a minimumallowable DeltaFilter value helps guarantee successful detection of anoccupant leaving the seat. If the calculated DeltaFilter value is toolow, i.e., below DeltaFilterMin, the DeltaFilterMin value will be usedinstead. In equation form:if DeltaFilter<DeltaFilterMin, then DeltaFilter=DeltaFilterMinThe values obtained from the calibration process are referred to as thecalibration data or structure. These values are stored in the ECU EEPROM150 for later use by the other classification system components of thisinvention.

In summary, the Calibration Unit 100 includes a calibration program(Calibration DLL) 102 that processes sensor data 104 during thecalibration process using sensor-specific values from a calibrationvariable file (Calibration Template File) 106 in order to producecalibration data (or structure) 108 for storage in the ECU EEPROM 150.Specifically, the Calibration DLL proceeds by verifying that the at rest(Baseline) and deflection (CalPos) values are within their respectiveranges (Baseline Range and CalPos Range), specified by the CalibrationTemplate File. If the values are within their appropriate range, theneach sensor's Baseline value is subtracted from its CalPos value toobtain a difference value (Delta).

The Delta is then multiplied by the Gain percentage to obtain a scaleddifference value (CalDelta). The CalDelta is checked to make sure thatit falls within the allowed scaled difference range (CalDelta Range)specified by the Calibration Template File 106. If CalDelta is withinthe CalDelta Range, then CalDelta is multiplied by a filter percentage(DeltaFilterPercent) to obtain a filtered difference value(DeltaFilter). If the DeltaFilter value is less than a minimum filtereddifference (DeltaFilterMin) specified in the Calibration Template File106, then it is set equal to DeltaFilterMin. CalDelta, DeltaFilter,MaxDeltaPercent, LedgeDeltaPercent, MaxDU, CalDU, and LedgeDU values foreach of the sensors are sent to and stored in the ECU EEPROM 150 for useby other components of the occupant detection software.

The calibration data 108 is stored in the ECU EEPROM 150 using thefollowing program structure (calibration structure): // // struct forcalibration data for Ledge DU calculation // typedef struct _DULEDGE {UINT8 deltaFilters[SENSORNUM]; UINT8 calDeltas[SENSORNUM]; UINT8ledgePercent, maxPercent; UINT8 ledgeDU, calDU, maxDU; }DULEDGE,*PDULEDGE;

The calibration data 108 from this calibration structure can then beused during the weight estimation process to make a preliminary weightestimate of a seat occupant.

FIG. 15 contains two flow charts illustrating the electronic controlunit (ECU) calibration interface for two embodiments of the calibrationprocess. These two calibration processes include Robot Calibration 126and Big Bag Calibration 128. These processes will now be described indetail with reference to FIG. 15. To begin, during step 130, bothprocesses enter a service mode and start the calibration process bydisabling SDM communications (the command for which depends on theprotocol used for the target platform). Both processes also then obtainnew Baseline values from the sensors during step 132. Further, in bothprocesses, the new Baseline values are commented to the EEPROM 150 aspart of step 132. Following the Baseline value sampling and storingstep, however, the processes become slightly different. The RobotCalibration process 126 proceeds with respect to a single sensor, whilethe Big Bag Calibration process 128 proceeds with respect to allsensors.

Accordingly, in the Robot Calibration process 126, a specific sensor iswatched as the calibration mode is entered in step 134A. In this step,the ECU is put into a fast sample mode for the single sensor, averagingthe value 30-deep. At a given sampling point, the sensor's deflection isread by a get sensor command as shown in step 136A. The deflected sensorvalue, CalPos, for the watched sensor is then passed to the CalibrationDLL 102 during step 138 in order to generate the calibration data 108(this step does not communicate with the ECU). Once the Calibration DLL102 generates the calibration values 108 described above, these valuesare committed to the EEPROM 150 during step 140, thereby updating theECU EEPROM 150. Finally, in step 142, the calibration data structure 108is read from the EEPROM 150 and compared with what was sent in theprevious step 140.

Unlike the Robot Calibration process 126, in the Big Bag Calibrationprocess 128, all of the sensors are watched simultaneously as thecalibration mode is entered during step 134B. The watch sensor commandof step 134B, therefore, puts the ECU into a fast sample mode for allsensors and the sample rate is passed with the command. Furthermore,averaging is 16 (rather than 30) deep. Next, during step 136B the valuesfrom all of the sensors are read by the get all sensors command. Thefinal three steps 138, 140, 142 of the Big Bag Calibration process 128are again similar to the Robot Calibration process 126. Specifically,the calibration sensor data is passed to the Calibration DLL 102 togenerate the calibration data values 108. The calibration data(structure) 108 generated by the Calibration DLL 102 is then committedto the EEPROM 150. Finally, the calibration data 108 is read back fromthe EEPROM 150 and compared with what was sent for error checking.

Referring again to FIG. 2, the calibration data 108 obtained from thecalibration process 100 forms the foundation for the operation of theother occupant classification components. The Weight Estimation Module200, in particular, uses the seat's calibration information 108 incombination with occupant sensor data (Raw Sensor Data) 204 to identifya vehicle occupant. The Pattern Module 300 then uses occupant sensordata 204 in combination with outputs from the Weight Estimation Module200 to identify a vehicle occupant. These two modules have differentresponsibilities within the system, but both modules contribute to afinal deployment decision 420 made by the Decision-Making Module 400.

More specifically, the Weight Estimation Module 200 uses the seat'scalibration information 108 and current sensor status 204 to calculateSensor DUs for each of the sensors. This array 206 of Sensor DUs is inturn used to make a preliminary estimate of the occupant's weight,represented as the occupant's Raw DU 208. The Sensor DU array 206 fromthe Weight Estimation Module 200 is sent to the Decision-Making Module400 and both the Raw DU 208 and the Sensor DU array 206, along with araw grayscale array 209, are sent to the Pattern Module 300 for use aspre-processed data. The Pattern Module 300 then analyzes the Sensor DUarray 206 to create a “seat image” or deflection pattern of theoccupant, that is based upon the current deflection positions of theindividual sensors in the seat. Although the output of both modulesinfluences the final decision 420, the Pattern Module 300 has the mostinfluence on the final decision 420 because it can directly manipulatethe final estimated weight (Decision DU) 308. Specifically, the PatternModule 300 can directly influence the Decision DU 308 by modifying theRaw DU 208 from the Weight Estimation Module 200. The specifics of eachof these modules will now be discussed in greater detail.

Weight Estimation Module

The Weight Estimation Module 200 performs the weight estimation process.Weight estimation makes two primary contributions to the occupantclassification system 55. First, it creates its own input to thedecision-making process and second, it lays a foundation for the PatternModule 300. In order to make these contributions valuable to theclassification system 55, there are several goals within the weightestimation process itself. A first goal is to successfully separate 5thPercentile Females from 6-Year Olds. Another goal is to distinguishother weight targets as may be required by a specific customer. A thirdgoal is to maintain a consistent weight “image” across body types,sitting positions, weight shifts, and environmental changes. Yet anothergoal is to calculate the weight image of an occupant consistently acrossthe seat material and assembly variations seen in production for aparticular platform. Finally, the weight estimation process shouldprepare a normalized representation of the sensor array's input for usein the pattern process. It is not the role of the Weight EstimationModule 200, however, to determine by itself whether the occupant is alive occupant or another occupant-type.

FIG. 16 is a flow diagram illustrating the basic components of theweight estimation process. As shown by FIG. 16, the first step 210 inweight estimation is to calculate the Sensor DU for each active sensorin the system. The result of these calculations is an array of up to 28bytes with a Sensor DU for each sensor. FIG. 17 is a block diagramillustrating data flow into the Weight Estimation Module 200 from theCalibration Unit 100 and the sensor array 50 (see FIG. 2) and furtherillustrating data flow from the Weight Estimation Module 200 to thePattern Module 300. As illustrated in FIG. 17, the Weight EstimationModule 200 uses calibration data 108 from the Calibration Unit 100 totranslate sensor data 204, representing each sensor's deflection due toa seat occupant, from the sensor array 50 into a normalized deflection(Sensor DU) value 206. The Weight Estimation Module 200 also calculatesan effective system deflection (Raw System DU or Raw DU) value 208 ofthe seat occupant by adding the Sensor DUs from all of the individualsensors together in step 216 of FIG. 16. The Raw DU value 208 is used inthe classification system as a preliminary weight estimate of the seatoccupant.

FIG. 18 is a flow diagram illustrating the process for calculating aSensor DU according to step 210 of FIG. 16. Referring to FIGS. 16-18,the process for calculating a Sensor DU during the weight estimationprocess, including the definitions of several terms useful in describingthe process, will now be explained. A Sensor Baseline 222 is a sensor's“at rest” value in the seat, or, in other words, its value with no load.A System Baseline is the array of baselines for the whole sensor mat 50(see FIG. 3). Monitoring Sensor Baselines 222 is very important becausea sensor will never produce zero resistance (especially with upholsterypre-loading), and a sensor's change in resistance due to a seat loadcan't be accurately determined without knowing its resting resistance.The Weight Estimation Module 200 continually tracks the baselines 222for all sensors.

A sensor's Current Position 224 is its last position observed byanalog-to-digital (A-to-D) conversion hardware. The Current Position 224and Sensor Baseline 222 values (sensor data) are numbers between 0 and255 and are not actually raw sensor resistance readings, although theyare determined based on the raw sensor resistance readings. The CurrentPosition 224 value is averaged in its own first-in first-out (FIFO)queue before any part of the DU calculation is performed. This helps toreduce the impact of noise in the system.

A Sensor Delta is calculated in step 226 by subtracting the SensorBaseline 222 from its Current Position 224. The resulting differenceshould be a positive value, and represents the amount of deflection thesensor is currently experiencing due to a seat load. This can becompared against the sensor's calibration deflection (CalDelta) valuefrom the fixed-load calibration process to help estimate the currentload on the sensor. Because the Baseline Management (BLM) System getsthe sensor's Current Position 224 after the DU calculation, negativeSensor Deltas are possible. Any negative Sensor Deltas that arise shouldbe considered to have a DU value of “0” without any further calculation.

The DeltaFilter values serve as a threshold for the DU calculation totake place. There is a DeltaFilter value for each sensor in the system.As indicated in step 228 of FIG. 18, if the Sensor Delta is not greaterthan its DeltaFilter value, the Sensor DU is set to “0” in step 230 andno further calculation is performed for that sensor. The DeltaFiltervalues thereby help to define a centered plane 72 (see FIG. 5) throughthe seat foam at a place where various occupants can be detectedaccurately. When the Sensor Delta value is greater than the DeltaFiltervalue, the Sensor DU will be calculated using the CalDelta value fromthe calibration data 108. As explained with respect to the CalibrationUnit 100, a calibration delta (CalDelta) is a sensor-specific, post-gaindeflection value determined during the calibration process.

There are three Sensor Delta values or regions where the Sensor DU canbe determined without interpolation. When a Sensor Delta is equal to itsCalDelta value, for example, the sensor is given a DU value equal to theCalDU setting. Also, when the Sensor Delta value equals the LedgeDeltavalue, the Sensor DU will be set to the LedgeDU setting.LedgeDeltaPercent (or ledgepercent) is equal to a fixed percentage of asensor's CalDelta value, as determined for that sensor in that seatplatform. The calculation of LedgeDelta takes place in step 232 bymultiplying LedgeDeltaPercent and CalDelta together and then dividing byone hundred. Finally, when the Sensor Delta value is equal to, orgreater than, MaxDelta, the Sensor DU will be set to the MaxDU value.Like LedgeDeltaPercent, MaxDeltaPercent (or maxPercent) is also a fixedpercentage of a sensor's CalDelta value as determined for that sensor.The MaxDelta value is calculated during step 242 by multiplying theMaxDeltaPercent and CalDelta together, dividing by one hundred, and thenadding CalDelta.

In short, Sensor DU is a normalized value that represents the currentrelative deflection of a sensor. CalDU is the DU value assigned to asensor as its Sensor DU when its Sensor Delta is equal to its CalDeltavalue. LedgeDU is the DU value assigned to a sensor as its Sensor DUwhen its Sensor Delta is equal to its LedgeDelta value, calculated usingits LedgeDeltaPercent. And finally, MaxDU is the DU value assigned to asensor as its Sensor DU when its Sensor Delta is equal to its MaxDeltavalue, calculated using its MaxDeltaPercent. Each of these values can besensor specific as well as platform specific, and they are allpreferably determined so as to optimize sensor focus to distinguishbetween 5th Percentile Females and 6-Year Olds.

When the Sensor Delta falls somewhere between the foregoing values,interpolation must be used to determine the Sensor DU. Steps 236, 240,and 246 show the interpolation that takes place to calculate the SensorDU, when necessary. The interpolation steps will now be described infurther detail with reference to FIGS. 18 and 19. FIG. 19 is a graphshowing a representative Ledge Curve 250. A Ledge Curve 250 is definedby values created during calibration and defines interpolation pointsfor determining a Sensor DU. More specifically, a Ledge Curve 250 is acurve on a Delta versus DU graph defined by the LedgeDelta, CalDelta,MaxDelta, LedgeDU, CalDU, and MaxDU calibration values for a givensensor. Each Ledge Curve 250 defines interpolation points fordetermining a Sensor DU for a specific sensor based on its currentSensor Delta. Accordingly, when the Sensor Delta does not equalCalDelta, LedgeDelta, or MaxDelta, the Sensor DU is calculated byinterpolating along the Ledge Curve 250 for that sensor. Theconfigurable settings in the calibration data allow the curve itself tobe re-shaped, if necessary. The Ledge Curve 250 shown in FIG. 19 hasbeen optimized to maximize the DU difference between a 5th PercentileFemale and a 6-Year Old and to maintain a consistent DU image acrossoccupant positions, weight shifts, and seat types.

The (CalDelta, CalDU) point 252 on the Ledge curve 250 of FIG. 19represents a typical secondary deflection surrounding a 5th PercentileFemale. The relatively flat section 254 of the curve before that pointis referred to as a 5th Female Ledge (or Ledge). The Ledge section 254helps maintain a consistent 5th Percentile Female image as her positionand weight distribution change. The MaxCurve 256, located betweenCalDelta and MaxDelta, on the other hand, represents a zone that 6-YearOlds seldom reach. Therefore, the DU values in that zone are escalatedrapidly. This allows the slightly greater deflections of a 5thPercentile Female to help increase her overall DU dramatically over a6-Year Old. The 6 yr. old line 258, located between zero deflection andLedgeDelta, represents a range of typical secondary deflections for a6-Year Old. DU values along this portion of the curve drop quickly tozero, in the direction of the origin, in order to minimize the effectsof any peripheral deflections surrounding a 6-Year Old. Additionally,all Sensor Deltas less than or equal to the DeltaFilter are assigned aDU of “0”. This further helps distinguish 6-Year Olds from 5thPercentile Females. Finally, all Sensor Deltas greater than the MaxDeltaare assigned the MaxDU value.

As discussed previously with respect to FIG. 18, to calculate the SensorDU for a given sensor, the Sensor Baseline 222 and Current Position (orSensor Position) 224 values are obtained from the sensor beingevaluated. The Sensor Baseline 222 and Current Position 224 values arethen compared (step 226) to obtain a Sensor Delta, representing thedifference between them. If the Sensor Delta is less than itsDeltaFilter value from the calibration data for that sensor stored inthe EEPROM 150 (see FIG. 2), then the Sensor DU is set (step 230) to“0”. Otherwise, the sensor's LedgeDelta is calculated (step 232) bymultiplying its CalDelta by LedgeDeltaPercent, both of which are alsostored in the EEPROM 150. If the Sensor Delta equals LedgeDelta, thenthe Sensor DU is set to the LedgeDU value. When the Sensor Delta isgreater than its DeltaFilter value but less than its LedgeDelta value,however, then an interpolation (step 236) should be conducted todetermine the Sensor DU. In this event, the interpolation (step 236)proceeds according to the formula:SensorDU=(Delta*LedgeDU)/LedgeDelta

Similarly, when the Sensor Delta is equal to CalDelta, the Sensor DU isset equal to CalDU. In the event the Sensor Delta is greater than itsLedgeDelta value but less than its CalDelta value, an interpolation(step 240) should be conducted. The interpolation in this instancefollows the formulas:DUDiff=CalDU−LedgeDUDeltaDiff=Delta−LedgeDeltaSensorDU=[(DeltaDiff*DUDiff)/(CalDelta−LedgeDelta)]+LedgeDU

Finally, if the Sensor Delta is greater than its CalDelta, the sensor'sMaxDelta is calculated (step 242) by multiplying its CalDelta by itsMaxDeltaPercent, both of which are stored in the EEPROM 150, and thenadding CalDelta. If the Sensor Delta is equal to or greater than itsMaxDelta value, then the Sensor DU is set (step 248) equal to the MaxDUvalue. When the Sensor Delta is greater than its CalDelta but less thanits MaxDelta, however, an interpolation (step 246) must be conducted.The interpolation to obtain the Sensor DU in this instance proceedsaccording to the formulas:DUDiff=MaxDU−CalDUDeltaDiff=Delta−CalDeltaSensor DU=[(DeltaDiff*DLDiff)/(MaxDelta−CalDelta)]+CalDU

By interpolating using a Ledge Curve 250, an appropriate DU value can bedetermined for each sensor in order to help classify a vehicle occupant.

FIG. 20 is a schematic diagram illustrating the conversion of the SensorData Array 204 into the Sensor DU Array 206. As shown, the calibrationdata is used to convert the sensor data into Sensor DU values for eachof the sensors. Referring back to FIG. 16, in step 212 of the weightestimation process, after the Sensor DU Array 206 has been created, aRaw Grayscale Array 260 of up to twenty-eight bytes is then created fromthe Sensor DU Array 206 using a grayscaling process.

Although, in this embodiment, grayscaling takes place during the weightestimation process, it is used primarily in the Pattern Module 300 andwill therefore be discussed in detail in that section. An Orphan Filter,which will also be described in further detail below, identifies orphansensors and eliminates their contribution to both the Sensor DU Array206 and the Raw Grayscale Array 260 during step 214. Once the OrphanFilter has been applied, all the Sensor DUs are added together in step216 to obtain the Raw System DU 208. As shown in FIG. 17, this Raw DU208 is then sent to the Pattern Module 300 along with the Sensor DUArray 206 for use in the pattern process.

FIG. 21 illustrates the creation of an Averaged Array (forty-two valuesin this example) 306 from the array of Sensor DUs (twenty-eight valuesin this example) 206 received from the weight estimation process.Referring to FIG. 21, the Averaged Array 306 is created as follows. EachSensor DU from the Sensor DU Array 206 is mapped at the intersection offour Averaged Array cells. Each Averaged Array cell value is computedfrom the average of the four Sensor DUs on its corners. Any corner thatdoes not have a Sensor DU uses the value of “0” instead. The result isan anti-aliased image of the Sensor DUs.

The Averaged Array 306 is then reduced into a Averaged Grayscale Array360 with values from “0” to “3” in a way similar to the Raw GrayscaleArray 260. This removes all absolute references from the sensor data.The Raw Grayscale Array 260 and Averaged Grayscale Array 360 are used toprocess the information in the Pattern Module 300. The relative weightsof many regions are calculated, as well as the width, height, number ofactive sensors, which rows and columns have occupied sensors, thegrayscale weights for each, and many other values.

Pattern Module

The Pattern Module 300 is a significant part of the OccupantClassification System 55. There are two categories of patternsubsystems. The first category is Child Seat Detection subsystems. Thesesubsystems directly contribute to the pattern statistics and to thedeploy or suppress status of the airbag controller by identifying childseats and triggering a suppress state when a child seat is detected. Thesecond category is Occupant Classification subsystems. These subsystemsonly indirectly contribute to the deployment status of the airbag byaltering the final Decision DU 308 when appropriate. Specifically, theOccupant Classification subsystems can change the Raw DU 208 to producea final Decision DU 308 based on various factors.

There are currently two Occupant Classification subsystems that are usedto update the Raw DU 208 and create the Decision DU 308. The Decision DU308 is the final DU number used by the system for determining a deployor suppress status of the airbag. The two Pattern subsystems used toobtain this final number are the Thin/Wide and ScatterCount subsystems.The Thin/Wide subsystem measures the width of the occupant in theAveraged Grayscale Array and determines if the width is indicative of a5th Percentile Female or a 6-Year Old child. If the width is indicativeof a 6-Year Old, then the Decision DU value 308 is set to one-half (½)the Raw DU value 208.

The ScatterCount subsystem determines the number of non-zero cells inthe Raw Grayscale Array 260. This subsystem is fairly complex and has itown Margin Management component to help widen the gap between 5thPercentile Females and 6-Year Olds. If this subsystem determines thatthe data is indicative of a 6-Year Old in the seat, it will also makethe Decision DU value 308 equal to one-half (½) the Raw DU value 208.

In addition to the width of the occupant, the occupant's position in theseat is also monitored by the Occupant Classification subsystems. Theabsolute position of the occupant is found using the Raw Grayscale Array260. Determining the occupant's position is an important component ofContext Management. Context Management attempts to keep track of wherethe occupant has sat and prioritize a decision reached when theoccupant's position was optimal and block a decision change when theoccupant's position is less dependable. The Decision DU 308 and patterninformation from the Pattern Module 300 are sent to the Decision-MakingModule 400 for final processing to determine a deployment state of theairbag.

In particular, the Pattern Module 300 identifies and evaluates patternsof sensor deflections created by seat occupants. In evaluating thesepatterns, the Pattern Module's 300 two primary tasks, related to the twosubsystems introduced previously, include the detection of child seatsand the classification of occupants. The first of these tasks, childseat detection, relies primarily on edge deflections and other uniquepattern distributions created by rigid objects, such as child seats.Because rigid bodies deflect car seat upholstery and foam differentlythan softer, organic occupants, such as humans, detecting edgedeflections provides a reliable way of identifying non-human occupants.Additionally, because child seats distribute their weight across a seatin a much different manner than a human, analyzing pattern distributionsin the seat further facilitates the identification of child seats. Thesecond task, occupant classification, evaluates the size of anoccupant's deflection pattern, and can be “tuned” to meet customerrequirements.

The Pattern Module 300 relies heavily on grayscaling to accomplish bothof these goals. Grayscaling helps correct for variations in raw sensorreadings caused by environmental and other changes. Although“grayscaling” in the digital media world typically refers to a fixed orabsolute method of representing visual media without color information,in this application, the preferred grayscaling method is more a“relative grayscaling.” It does not use a predetermined “brightness”scale but instead adjusts the grayscale image according to the relative“brightness” of the input sensor data. Grayscaling according to thisprocess provides both weight immunity and outline detection.

Grayscaling is generally necessary in automotive seat occupant detectionbecause, among other things, the seat foam and upholstery of a car seatare constantly reacting to movement, force, and environmental changes.The seat foam and upholstery also typically exhibit a memory byretaining some amount of deformation caused by previous occupants. Asillustrated by the two graphs of FIG. 22, the result of thesecharacteristics is often that the sensor system exhibits differentabsolute readings for an identical occupant. The deflection pattern,however, remains generally the same. Unfortunately, trying to recognizea pattern when looking at an image based on an absolute scale can bevery difficult. Patterns will be lost or can change simply based ontheir scale.

Grayscaling is one of the best ways to deal with the inherent variationsof an “A-surface” seat sensor system. As shown by the graphs in FIG. 22,grayscaling provides an identical image for the deflection patterns byremoving all references to an absolute scale and creating a scale basedon the relative data in the image. Removing all absolute references fromthe grayscaled image of the seat sensor deflection pattern providesweight immunity, allowing the system to detect an outline of an occupantregardless of in-seat weight. The system is thereby able to create aconsistent image for the same occupant regardless of sensor variationscaused by use or environmental changes. It is also able to providesimilar images for different occupants having similar in-seat shapes butdifferent in-seat weights. This method therefore provides a way offocusing fuzzy images so that their relative shapes can be identifiedand used. The focused grayscale image is what makes accurate child seatrecognition and occupant classification possible. The grayscale in FIG.23 uses an alternative weighting system.

Referring to FIGS. 24 and 28, there are two types of grayscaled imagesused by the Pattern System, the Raw Grayscale Array 260 and the AveragedGrayscale Array 360. The Raw Grayscale Array 260 is presently the mosthelpful of the two images. The Raw Grayscale Array 260 is created fromthe Sensor DU Array 206 and provides an image of the active sensors inthe seat. Each component of the array has a direct relationship with aphysical sensor in the seat. This array 260 reveals specific patterntraits of objects and occupants in the seat. In particular, edgedeflections from child seats are exposed by this array 260 as well asgeneral occupant size. The Raw Grayscale Array 260 is therefore veryeffective for detection of occupants and objects with specificcharacteristics. The Averaged Grayscale Array 360 is created from theAveraged DU Array 306 and is used to generalize relative weightdistribution.

The first step 262, 362 in building either grayscale image (or array) isto identify the largest value from the appropriate underlying array(i.e., Sensor DU Array 206 or Averaged Array 306). The largest arrayvalue is used to define the top of the scale (100%) for the grayscalerange. The range (from zero to the largest Sensor DU or Averaged Arrayvalue) is then divided into four different sub-ranges during step 264,364. These four sub-ranges are called Range0, Range1 Range2, and Range3.The sub-ranges are preferably divided into equal percentages, where eachsub-range contains 25% of the range. More or fewer sub-ranges andvarious other sub-range distributions could also be used, however, withvarying percentages. The various preferred sub-ranges and theirdistribution percentages are shown below:

-   -   Range0=0%-25%    -   Range1=25%-50%    -   Range2=50%-75%    -   Range3=75%-100%

In step 266, 366, once the sub-range distributions are established,every other Sensor DU or Averaged Array value is divided by the largestvalue and multiplied by one hundred to obtain its percentage value withrespect to the greatest possible value. Each percentage Sensor DU orAveraged Array value is then placed within its appropriate sub-range andassigned a grayscale weight for its value relative to the largest valueduring step 268, 368. The exact weighting system may be modifieddepending on the desired application (see, e.g., FIG. 23). The presentgrayscale weight system uses values ranging from 0 to 3 for thesub-ranges Range0 to Range3. 1. Range0  (0-25%) Grayscale Weight = “0”2. Range1 (25-50%) Grayscale Weight = “1” 3. Range2 (50-75%) GrayscaleWeight = “2” 4. Range3  (75-100%) Grayscale Weight = “3”

Finally, the grayscale weight for each of the sensors is placed in itsappropriate location, based on its sensor number or array location, intothe Raw Grayscale Array 260 or Averaged Grayscale Array 360,respectively. The final result is two arrays of grayscaled weightsreflecting the normalized values in the original Sensor DU Array 206 andAveraged Array 306.

Referring now to FIG. 25, once the Raw Grayscale Array 260 has beenconstructed, an Orphan Filter 270 uses that array to search for orphansensor deflections during step 214 of the weight estimation process. TheOrphan Filter 270 has been adapted to provide two levels offunctionality. Bolster sensors deflecting from wrinkled upholstery are acommon problem. A first level of functionality was originallyimplemented to help the occupant classification system ignore theseunwanted bolster deflections as well as other single-point deflectionscaused by various objects in the seat. Originally, therefore, thisfilter 270 was designed to find only “true” orphan sensors. True orphansensors are sensors having a grayscale weight greater than “0” that donot have any neighbors with grayscale weights greater than “0”.

At the first level, therefore, to qualify as an orphan, the sensor mustnot have another sensor deflection on any of its eight possible sides inthe Raw Grayscale Array 260. A second level of functionality wasdeveloped. In addition to identifying true orphan sensors, this secondlevel also identifies sensors having only one deflected neighbor on adiagonal corner. This variation was developed to help minimize thepattern size of small children sitting in the seat with their legsapart. Any orphan sensors found using these two levels are marked.

The current Orphan Filter 270 therefore searches for both types oforphan sensor deflections, namely, sensor deflections without anyneighbors and sensor deflections with only one diagonal neighbor. Anyorphan sensor deflections found by the Orphan Filter 270 are eliminatedin both the Sensor DU Array 206 and the Raw Grayscale Array 260 bywriting a value of “0” at each orphan's location. For example, sensor #1in FIG. 25 is an orphan sensor within the first level of functionalitybecause it has a raw grayscale weight of “2”, while each of itsneighbors, sensors #2, #7, and #8, all have a raw grayscale weight of“0”. In this instance, therefore, the Orphan Filter 270 writes a valueof “0” into orphan sensor #1's location in both the Sensor DU Array 206and the Raw Grayscale Array 260.

Sensor #19 is an orphan sensor using the second level of functionality.In this figure, sensor #19 is shown having a raw grayscale weight of“1”, while only one of its neighbors, diagonal neighbor sensor #15, alsohas a grayscale weight greater than “0”. The value “0” is thereforewritten into sensor #19's location in both the Sensor DU Array 206 andthe Raw Grayscale Array 260 as well. By thus identifying and eliminatingisolated deflections, this filter helps minimize the effects ofincidental deflections on the final weight estimate.

Child Seat Detection

As noted above, one of the main purposes of the Pattern Module 300 is tolook for traits in the pattern of seat sensor deflections that arecommon for objects other than people. To help accomplish this, theOccupant Classification System 55 of this invention can take advantageof the unusual deformation characteristics exhibited by seat foam.Referring to FIG. 26, unlike balloons or other types of bladders filledwith a gas or fluid, which tend to exert an even force across theirsurface when deformed, seat foam concentrates a higher surface force atthe edges of the object causing the deformation. For this reason, flat,rigid objects pressed into the seat tend to experience the highestresistance at their edges, while their centers see relatively lightforces. Fluid-like or softer objects, on the other hand, will tend tore-form against the foam and experience a far more even deflectionpattern in the foam. Accordingly, because people have relatively softbodies, they deflect the seat foam in a far different manner than rigid,plastic molded child seats. This recognition is incorporated into thePattern Module 300, allowing it to recognize child seats veryeffectively.

A child seat can cause any one or more of a number of pattern traits ina seat bottom, regardless of how much weight is in the child seat. Thesepattern traits can help to distinguish between a child seat and a liveoccupant. Filters are provided to the Occupant Classification System 55to test for these pattern traits and fail child seats when detected.There are two basic categories of pattern detection techniques that arepreferably used by the Occupant Classification System 55, namely, edgedeflection and distribution. Edge deflection pattern detection primarilyuses the Raw Grayscale Array 260 to detect edge characteristics thatresult from rigid bodies (like child seats) in the seat. Distribution,on the other hand, recognizes that child seats can be quite large, long,or wide and will typically distribute force/weight across the seat in amanner very inconsistent from real people. Both the Raw Grayscale Array260 and the Averaged Grayscale Array 360 can be used for this type ofdetection.

Internally, the Occupant Classification System 55 preferably comprisessoftware that represents each pattern test using a single pattern flag.Referring to FIG. 27, an identical set of flags is used as a mask toenable or disable the different pattern tests. This allows individualtests to be enabled or disabled for different vehicle platforms or foamor trim types. As noted above, the Pattern Module 300 essentially testsfor non-human occupants. Failing a pattern test is an indication of anon-human occupant in contact with the seat. An individual pattern testsets its flag when it passes and clears its flag when it fails. Thepattern system passes an occupant when the flags are identical to themask.

Referring now to FIG. 28, the Averaged Grayscale Array 360 is primarilyused to analyze weight distribution in the seat bottom. For instance, ifa very large person is firing all the sensors in a seat, the forceapplied to the sensors closest to the seat edge should not besignificantly greater than the force experienced by the sensors in themiddle of the seat. The Averaged Grayscale Array 360 is created from theAveraged Sensor DU Array 306. These two arrays 306, 360 focus on therelational status of neighboring sensors. The diagram shows forty-two(42) cells in the array, where one physical sensor can be found at thecorner of four neighboring array cells.

Several pattern filters have been developed to find common child seatpatterns in the Averaged Grayscale Array 360. Referring additionally toFIGS. 29A-D, each Averaged Grayscale Array 360 pattern component ismade-up of a region or group of specific array cells. This region isscored by summing all the grayscale weights within that region. Thesystem 55 can be configured to use any single region or combination ofregions in new filters. While the following regions are currentlydefined, numerous other regions are possible.

The U-Region 372, shown in FIG. 29A, measures the total grayscaledweight of the left, right, and front edges of the seat bottom. TheN-Region 374, shown in FIG. 29B, is the exact inverse of the U-Region372. The N-Region 374 measures the total grayscaled weight of the middleand mid-back edge of the seat bottom. The MID-Region 376, shown in FIG.29C, measures the total grayscaled weight of the middle six cells pluscell #11. The MS-Region 378, shown in FIG. 29D, measures the totalgrayscaled weight of the two middle cells in the middle column.

The pattern tests performed on the Averaged Grayscale Array 360typically compare the total grayscale weight for two regionsmathematically. While the following tests are currently defined,numerous other tests are possible. The UN-Pattern test, for example,compares the outside edges of the seat to its middle. If the outer edgesof the seat are deflected more than the middle, the object in the seatis causing an edge deflection, or may even be spanning the center of theseat, which is very typical of car seats. The comparison isstraightforward and can be performed using the following algorithm:if(Utotal > Ntotal) { patternFlagUN = 0; // test fails }else patternFlagUN = 1; // test passes

The MIDN-Pattern test compares the middle region of the seat to sevenspecific center cells. It is possible for a child seat to score wellwith the UN but still be failing in the very middle of the seat. Thefollowing algorithm can be used to perform this test: if(MIDtotal <=(Ntotal / 3)) { patternFlagMIDN = 0; // test fails }else patternFlagMIDN = 1; // test passes

The MSMID-Pattern test looks for a specific hole in the averaged patterndirectly in the seat middle. Certain child seats will always create thishole. A preferred algorithm for this test is provided here: if(!MStotal&& MIDtota) { patternFlagMSMID = 0; // test fails }else patternFlagMSMID = 1; // test passes

The BlockCount is the total number of cells in the Averaged GrayscaleArray 360 with a weight greater than “0”. The BlockCount can be tuned,however, to higher weight thresholds. The BlockCount is compared to aminimum required BlockCount value. If the BlockCount is less than orequal to the minimum, the test fails. This test detects very smallobjects or point loads such as those resulting from child seat cornersor legs. The following algorithm can be used to accomplish this:if(blockCount <= maxBlockCount) { patternFlagBlockCount = 0; // testfails } else patternFlagBlockCount = 1; // test passes

In addition to the pattern tests identified above that use the AveragedGrayscale Array 360, several pattern “filters” use the Raw GrayscaleArray 260 to test for common child seat patterns. Referring to FIGS. 24and 30A-G, these filters are useful in identifying additionalcharacteristics common to child seats. For example, many child seatshave bars, plastic legs, or other edges running horizontally. Thesehorizontal fixtures create patterns with very clear horizontalcomponents. The Row Filter 272, the arrangement for which is shown inFIG. 30A, can be used to detect this type of pattern. Referring to FIG.30A, only the center sixteen sensors are used in the Row Filter 272. Thebolster sensors are not used. For the Row Filter 272, the center sensorsare organized into four rows of four sensors each. The back row ofsensors, located at the back of the seat, is identified as row one, thenext two rows are row two and row three, respectively, and the front rowis identified as row four. Each row's score Row1, Row2, Row3, and Row4,respectively, is calculated by summing the grayscale weights of itsmembers.

RowThreshold and RowTotal are the two variables used to set thesensitivity of the Row Filter 272. The RowThreshold value is a grayscaleweight total that an individual row must be greater than or equal tobefore qualifying to be passed through the Row Filter 272 test. TheRowTotal value is compared to the summed grayscale weights of theneighboring rows (above and below the current row being tested). If thesummed weights are less than the RowTotal value, the filter fails.

The tests for Row2 and Row3 are similar. The test algorithm is shownhere using Row2: if(Row2 >= RowThreshold) // threshold test { if((Row1 +Row3) < RowTotal) { patternFlagRow = 0; // test fails } }

Because the front and back rows have only a single row next to them, thelogic of these tests (Row1 and Row4) must be modified slightly, butremains essentially the same. The test algorithm for these rows is shownbelow using Row4. if(Row4 >= RowThreshold) // threshold test { if(Row3 <RowTotal) { patternFlagRow = 0; // test fails } }

A second part of the Row Filter 272 doesn't have a sensitivityadjustment. It simply tests to see if any Row has non-zero weight andits surrounding rows have no weight. The test for Row2 follows:if((Row2) && !(Row1 || Row3)) { patternFlagRow = 0; // test fails }

The test for rows one and four simply tests the single neighboring row(example uses Row4): if((Row4) && !(Row3)) // check front row {patternFlagRow = 0; // test fails }

Another filter is the Quad (Diagonal) Filter 274, illustrated in FIG.30B. When a child seat with horizontal pattern components is twistedclockwise or counterclockwise in the seat the horizontal componentsbecome diagonal. The Quad Filter 274 tests for this. Referring to FIG.30B, the Raw Grayscale Array cells are organized into quadrants (Quad1,Quad2, Quad3, and Quad4) in the seat middle. Each quadrant score iscalculated by summing the grayscale weights of its members. A singlevariable, QuadTotal, is used to set the sensitivity of the Quad Filter274. QuadTotal is a grayscale weight total which must be greater thanthree quadrants added together before failing the Quad Filter test.

Each quadrant is tested as follows (example uses Quad1): if((Quad1) &&((Quad2 + Quad3 + Quad4) <= QuadTotal)) { patternFlagQuad = 0; // testfails }

There is another optional way to apply the Quad Filter 274 using thePattern System's statistics. If the pattern statistics indicate that thepattern system has failed the current occupant more often than passingthat occupant, then the Quad Filter 274 is enabled, otherwise the QuadFilter 274 is bypassed. This is an optional feature that is beingevaluated. The basic logic follows: // // The flag use_Diagcontext isset if pattern statistics are to be used // to enable/disable the QuadFilter // if((!use_DiagContext) || (PatternFailStats >=PatternPassStats)) { // perform Quad Filter here }

The Square Filter 276, illustrated in FIG. 30C, was originally designedto detect Rear Facing Infant Seats (RFISs). These seats will typicallynot successfully deflect one of the groups of four sensors (calledsquares) located near the center of the seat. During use, this filterhas proven to be very good at detecting many child seats that havestructures around the edges of their frames, or with relatively flatbottoms.

The two center columns of cells in the Raw Grayscale Array 206 areorganized into three squares—Square 1, Square 2, and Square 3. At leaseone of these squares must pass the Square Filter test 276 for the testto pass. Each square is scored to produce a square value (Square1,Square2, Square3) by counting the number of cells with non-zerograyscale weights. The highest possible score for any square is four.SquareTotal is a sensitivity setting for this filter that may be setfrom 0-4. Any square scoring less than the SquareTotal will fail theSquare Filter test 276. The Pattern Context feature discussed later inthis document can alter the Square Filter 276. The test used for eachsquare is shown below (example uses Square 1): if(Square1 < SquareTotal)// are we below the threshold ?? { patternFlagSquare = 0; // fail test }

The Scatter Filter measures the density of the occupant's image in theRaw Grayscale Array 260. The Scatter Filter begins by calculatingseveral values. One of those values is RawHeight, which represents theheight of the image, measured by finding the non-zero cells closest tothe back and front rows. RawWidth is also calculated, which representsthe occupant's width measured by finding the leftmost and rightmostnon-zero cells. ScatterCount represents the total number of non-zerocells in the Raw Grayscale Array 260. The Scatter Filter tests thedensity of the occupant's image by calculating its area and comparing itto the total number of non-zero cells. if(ScatterCount <= ((RawHeight *RawWidth) / 3)) { patternFlagScatter = 0; // fail test }

A sensitivity adjustment for the Scatter Filter can be created by addingan extra term to the area calculation in the test. For example, asensitivity term named ScatterAdjust can be used to adjust sensitivityas follows. The greater the value of ScatterAdjust, the less sensitivethe Scatter Filter test will become. The new test would be:if(ScatterCount <= (((RawHeight * RawWidth) / 3) + ScatterAdjust)) {patternFlagScatter = 0; // fail test }

Another filter is the Oreo Filter 278 shown in FIG. 30D. The Oreo Filter278 tests for the very typical child seat characteristic in which theleft and right sides of the car seat has significantly more deflectionsthan the center. Referring to FIG. 30D, the Raw Grayscale Array 260 isorganized into three columns. Each column score is calculated by summingthe grayscale weights for all member cells.

The logic for the Oreo Filter test is as follows: if((Column1 +Column3) > ((Column2 / 2) + OreoTotal)) { patternFlagOreo = 0; // failtest }

OreoTotal is a sensitivity adjustment to the final value for the rightside of the test. As OreoTotal increases in value the test sensitivityis lowered. The Pattern Context feature discussed later in thisapplication can also be used to alter the Oreo Filter 278.

The Tip Filter 280, shown in FIG. 30E, was created to test a category ofRear Facing Infant Seats (RFISs) that apply all their weight in thefront half of the seat bottom. This test uses the same Raw GrayscaleArray 260 cell organization as the Row Filter 272. In this filter, thefront two rows are compared to the back two. If the front half issignificantly more affected by the occupant, the filter fails. The logicfor this test is as follows: if(((Row3 + Row4)/2) > (Row1 + Row2 +TipSensitivity)) { patternFlagTip = 0;  // fail test }

There is a sensitivity term on the right side of the test calledTipSensitivity. As TipSensitivity increases, the Tip Filter sensitivityis lowered. The Pattern Context feature discussed below can also alterthe Tip Filter 280.

The Tip Filter 280 may cause some problems when the occupant sits in thefront of the seat. To help prevent this problem, the Tip Filter 280 isenabled or disabled using the Pattern Statistics. The test toenable/disable this filter follows: if(PatternFailStats >=PatternPassStats) { // Perform Tip Filter Test }

On seats where the front-to-back spacing of the sensors is compressed,it is generally best to disable the Tip Filter 280. The reduced spacingtypically does not allow RFIS patterns to occupy the front two rows.

The Flag Filter 282, shown in FIG. 30F, tests all columns of the backtwo rows (row one and row two) for flags. Many child seats will createpatterns that have small vertical columns (flags) in the back. The firststep in the Flag Filter 282 is to score the possible flags (there aresix total). The scores are calculated using the Raw Grayscale Array 260and simply represent the number of non-zero cells in each Flag.

-   -   (Score=2) A score of 2 means that both cells of the flag are        non-zero.    -   (Score=1) A score of 1 means that only one cell of the flag is        non-zero.    -   (Score=0) A score of 0 means neither cell of the flag is        non-zero.

The logic for building the Flag scores is as follows: // Build flagscores in a column orientation for back two rows of seat. for(x=0; x<6;x++) { score = 0; if(RawGray[x] && RawGray[x + 6]) // are both rowsnon-zero ?? { score = 2; } else if(RawGray[x] || RawGray[x + 6]) // isonly one row non-zero { score = 1; } Flags[x] = score; }

The next step is to perform the test itself. Presently, this test isonly performed on the four center Flags 2-5). However, Flags 1 & 6 areused in the test of Flags 2 & 5 (shown below). FlagThreshold is apossible sensitivity threshold for this filter and simply represents thenecessary score for a Flag before it can be considered valid. // TestFlag 2 if((Flags[1] >= FlagThreshold) && !( Flags[0] || Flags[2])) {patternFlagFlags = 0; // test fails } // Test Flag 3 if((Flags[2] >=FlagThreshold) && !( Flags[1] || Flags[3])) { patternFlagFlags = 0; //test fails } // Test Flag 4 if((Flags[3] >= FlagThreshold) && !(Flags[2] || Flags[4])) { patternFlagFlags = 0; // test fails } // TestFlag 5 if((Flags[4] >= FlagThreshold) && !( Flags[3] || Flags[5])) {patternFlagFlags = 0; // test fails }

Another possible sensitivity adjustment would require a minimum numberof valid flags to be present before failing the test.

The Edge Filter 284, illustrated in FIG. 30G, tests for occupantcharacteristics that are the opposite of those of a human occupant.Humans will typically have their largest deflections in the middle oftheir pattern with the deflections tapering off toward the pattern'sedges. Rigid objects, however, create just the opposite pattern-havinglarge deflections on the outside and smaller deflections in the middle.In some cases, this can be the only difference in the patterns, whichmay otherwise be in the same area of the seat and have roughly the sameshapes.

Several variables are calculated for the Edge Filter 284. TheBlackBlueTotal value, for instance, is obtained using a weighted-scoringsystem that assigns and adds a weight for each grayscale weight of “0”and “1” (the bottom 50%). This is performed on the middle two rows inthe seat center (row two and row three). The grayscale weights areassigned the following values and added to the BlackBlueTotal: GrayscaleWeights Assigned Value 0 2 1 1 2 0 3 0

Referring to FIG. 30G, for the Edge Filter 284, the Raw Grayscale Array260 is organized into four center columns. The grayscale weights of acolumn's cells are summed to create the terms Col1, Col2, Col3, andCol4. These terms are very similar to the Row1-Row4 values calculatedfor the Row Filter 272. The same rows in the Raw Grayscale Array 260 areused, but instead of summing the grayscale weights, the cells withnon-zero grayscale weights are counted. The Row1-Row4 values are alsocalculated for use in the Edge Filter 284. These are the same termscalculated for the Row Filter 272.

The grayscale weights of the four middle cells in the Raw GrayscaleArray 260 are summed to create the term Center. There is also asensitivity setting, EdgeDiff, which is a threshold setting thatBlackBlueTotal must exceed before applying the Edge Filter 284. Thepresent version of the Edge Filter 284 has been optimized for seatpatterns having set dimensions. The Edge Filter 284 checks the outeredges of the center section in the Raw Grayscale Array 260. Thisincludes rows one and four and columns two and five. Basically, therelative edge weights are compared to the seat middle. The followingsteps are used in the Edge Filter execution:

Step 1: Threshold Test

BlackBlueTotal must be greater than EdgeDiff. In other words, there mustbe enough low grayscale weights in the middle of the pattern to warrantapplying this test.

There must also be enough grayscale weight in the back and front halvesof the image to warrant proceeding. In other words, there must be apossibility of outside edges in the pattern.

Step 2: Edge Test #1

This first edge test simply requires that the summed weights of thefront and back rows are each above a hard-coded threshold of “2”. And,the summed weights of the front and back rows added together must begreater than or equal to the summed weights of the two middle rows (twoand three) plus an additional constant of “5”.

Step 3: Edge Test #2

The second edge test uses higher edge thresholds and a lower middlethreshold when compared to Edge Test #1. An alternative test for themiddle threshold uses the Center term and requires that it be less thanor equal to “4”.

Step 4: Edge Test #3

The third edge test imposes a much higher threshold for the front andback edges and a much lower requirement for the middle rows as comparedto the other edge tests.

Step 5: Edge Test #4

The fourth edge test checks for vertical edges. It is identical to thesecond edge test except that column weights are used in place of rowweights.

The algorithm for the Edge Filter 284 is as follows:if((BlackBlueTotal > EdgeDiff) && ((Row1Cells + Row2Cells) >= 4) &&((Row3Cells + Row4Cells) >= 4)) { //Edge Test #1 if((Row1 >= 2) &&(Row4 >= 2) && ((Row1 + Row4) >= (Row2 + Row3 + 5))) { patternFlagEdge =0; // fail test } // Edge Test #2 else if ((Row1 >= 3) && (Row4 >= 3) &&(((Row1 + Row4) >= (Row2 + Row3 + 3)) || (Center <= 4))) {patternFlagEdge = 0; // fail test } // Edge Test #3 else if((Row1 >= 5)&& (Row4 >= 5) && ((Row1 + Row4) >= (Row2 + Row3))) { patternFlagEdge =0; // fail test } // Edge Test #4 else if ((Col1 >= 3) && (Col4 >= 3) &&(((Col1 + Col4) >= (Col2 + Col3 + 3)) || (Center <= 4))) {patternFlagEdge = 0; // fail test } }

An edge filter that supports seat patterns of different sizes is alsowithin the contemplation of this invention.

Pattern Context

Many of the filters discussed above have sensitivity settings. As thesesettings are changed, the system's sensitivity to child seat patternscan be raised or lowered. In other words, the system's likelihood offalsely classifying a human occupant as a child seat can be raised andlowered. During seat system development, all filters must be evaluatedwith live occupants to make sure there is no false child seat detection.These settings are called the “Default” settings.

Another group of settings can also increase child seat detectionsuccess. These settings are called the “Context” settings. An option inthe occupant classification system allows the Context Filter settings tobe used, under specific circumstances, to increase child seat detection.This option is called Pattern Context, and once enabled, it uses thePattern Statistics to dynamically apply either the Default or ContextFilter settings.

Referring to FIG. 31, when a seat is initially occupied, the Defaultsettings are always used. However, if PatternFailStats becomes greaterthan PatternPassStats—meaning that the pattern test has failed theoccupant more than it has passed the occupant—the Context Filtersettings are applied so that the occupant will be more likely tocontinue failing the pattern test. If, at anytime, PatternFailStats isno longer greater than PatternPassStats, the Default settings are thenre-applied.

The purpose of the context settings is to keep the pattern systemsuccessfully detecting a child seat for the entire duration it is in theseat. It is important to remember that the Context settings don't failhuman occupants easily, so, using them doesn't disable the system'sability to detect live occupants.

Occupant Classification

If the pattern test determines that the seat is occupied by a humanrather than a car seat or other rigid object, occupant classificationtakes place to distinguish between the different types of liveoccupants. As discussed previously, occupant classification isparticularly challenging when distinguishing between 6-year-old childrenand 5th percentile females. This is primarily because their in-seatweights are very similar; with small children having most of theirweight in the seat and 5th percentile females normally applying onlypart of their total weight to the seat bottom.

In order to overcome this difficulty, the Pattern System 300 usesoccupant size, as it can be perceived in the seat bottom, to classifyseat occupants. In general, this means measuring the size of the sensordeflection pattern in the seat. There are two primary approaches fordetermining pattern size, Thin/Wide and ScatterCount. Referring to FIGS.32A, 32B, and 32C, the Thin/Wide approach uses the Averaged GrayscaleArray to measure the occupant's width. This method is presently lesspreferred, because it has a predictable instability. The ScatterCountmethod, illustrated in FIG. 34, uses the total number of cells firing inthe Raw Grayscale Array to measure the occupant's overall size, and isthe presently preferred approach. A schematic representation andcomparison of the two approaches is presented in FIG. 33.

Referring to FIGS. 32A, 32B, 32C, and 33, the Thin/Wide occupantclassification method simply measures the width of the pattern in theAveraged Grayscale Array 360 by finding the left-most and right-mostnon-zero cells in the array. The result of this width algorithm isOccupantWidth. The parameter ThinWidth determines the maximum widthallowed for a “thin” classification. An example of this is:if(OccupantWidth <= ThinWidth) { // process for thin classification }else { // process for wide classification }

Unfortunately, there are circumstances than can make this methodunreliable. The Averaged Grayscale Array 360 is created from theAveraged DU Array 306. The edges of the pattern seen in the AveragedGrayscale Array 360 are simply therefore a product of the grayscalingalgorithm and the 25% range that is assigned a grayscale weight of zero.At any point, one of the four cells contributing to the “zero-weight”cell on the pattern edge could increase due to a weight shift orenvironmental change. This can cause any edge cell to “wink” on or offas the occupant shifts, or as environmental changes occur. A singleAverage Grayscale Array cell close to the 25% border that is winking cancause the results of the Thin/Wide approach to change at any moment.

The Thin/Wide method results are used by a weighted-statistical system.The collection and use of statistics is covered in greater detail withrespect to the Decision-Making Module 400. Basically, statistics aregathered based on occupant movement. When an occupant is moving in theseat, no system statistics are gathered, as any snapshot during movementwould be unreliable and unpredictable. Once the occupant becomes steady(i.e., stops moving), a SteadyTime counter is incremented for eachconsecutive “steady” second, until the occupant moves again. Renewedmovement resets the SteadyTime to 0. An important element of statisticalsampling in the SeatMap system is applying more emphasis on samplestaken with a larger SteadyTime value than those taken with a lower one.This means that an occupant measurement resulting from a longer steadystate will have a greater contribution to the overall statisticalpicture. Thin/Wide statistics, for instance, do this.

There are two statistical collection points for Thin/Wide, currently setat two and five seconds respectively. Each collection point has its ownstatistical weight for thin or wide status. This allows the secondcollection point to be tailored independently to add greater, equal, orless to the statistical totals. This also allows thin and wide weightsto be adjusted independently for both collection points. Each frameprocessed uses Thin/Wide statistics to alter the Decision DU, ifnecessary. For example: if(ThinStats > WideStats) // if statisticsindicate thin occupant { // Lower DU by a preset fraction of the DUwhich is defined // by the value of ThinDUScale DecisionDU −=(DecisionDU / ThinDUScale); }

An improvement for Thin/Wide statistics blocks statistical gatheringwhen the occupant is not centered in the seat because a Thin/Wideclassification can be unreliable when the occupant sits either inboardor outboard.

The ScatterCount method is the presently preferred method for occupantclassification. ScatterCount represents the number of non-zero cells inthe Raw Grayscale Array 260. This method has proven much more reliableand stable across environmental and sensitivity changes than theThin/Wide method. Referring to FIG. 33, the ScatterCount method alsorepresents a multidimensional approach to determining occupant size,where the Thin/Wide approach only provides a one-dimensionalmeasurement. The reasoning behind the application of the ScatterCountmethod is that different size occupants will generally have a verypredictable surface area, which is consistent across many individuals.

Referring to FIG. 34, the ScatterCount method uses predeterminedthresholds to classify occupants. Fifth percentile females will have atypical ScatterCount value (“11” for Cadillac S5S) that is much greaterthan 6-year olds (“6” for Cadillac S5s). This is a much larger marginthan the single column width difference for the Thin/Wide method.Occupant TypicalScatterCount 5th Female 11 Six-year old 6 50th male 16

The typical threshold used for ScatterCount is “9”. The logic for theScatterCount method looks like this: if(ScatterCount <=ScatterCountThreshold) { // classify occupant as a child } else { //classify occupant as 5th female or larger }

Because car seats have complex surfaces, the position an occupant issitting in can affect the ScatterCount. This is particularly true forInboard/Outboard (Left/Right) positions, which typically reduce theScatterCount value. A separate threshold is used for non-centeredpositions to maintain consistent performance. A common threshold for usewhen the occupant is in the Inboard/Outboard position is “6”.if(offcenter) // is occupant inboard or outboard? { if(ScatterCount <=OffCenterThreshold) { // Lower DU by a preset fraction of the DU whichis defined // by the value of SmallDUScale DecisionDU −= (DecisionDU /SmallDUScale); } else { // classify occupant as 5th female or larger } }else { if(ScatterCount <= CenterThreshold) { // classify occupant as achild // Lower DU by a preset fraction of the DU which is defined // bythe value of SmallDUScale DecisionDU −= (DecisionDU / SmallDUScale); }else { // classify occupant as 5th female or larger }

Various alternatives are also contemplated. For instance, a separatethreshold for occupants sitting in the front part of the seat versus theback is a potential improvement. Seating positions could also becategorized in quadrants.

Another feature is Margin Management. The Thin/Wide method usesstatistics to help keep it from quickly changing the system's deploystatus every time the occupant appears to be thin or wide. Statisticsgenerally work well for preventing unwanted shifts in the deploy statusbecause occupants are more likely to be classified correctly over time.There may be circumstances, however, where an occupant is initiallymisclassified and is thereafter only correctly classified after thepassage of a certain period of time. Unfortunately, using statistics inthis situation slows recovery to the correct occupant classificationbecause the statistical balance must swing the other way and this maytake time.

A design goal for using ScatterCount was to try to create an alternativemethod that can dynamically adjust ScatterCount thresholds based on theoccupant and allow for quick recovery in the case of misclassification.To accomplish this, the ScatterCount Threshold is managed up or downwithin a range defined using the ThresholdMin and ThresholdMax values.Each time the ScatterCount classifies the occupant as a child theThreshold is incremented until it reaches the ThresholdMax. This allowsthe margin to be dynamically increased for the child to help guardagainst accidental misclassification because of some future activity inthe seat.

If the ScatterCount is greater than Threshold (occupant is a 5th femaleor larger) the Threshold is decremented until it equals ThresholdMin.The range allowed for the Threshold is relatively small to allow amisclassification to recover very quickly. For instance, if a thin 5thfemale somehow scores a ScatterCount of “8” initially but later shiftsand scores an “11”, her classification will change immediately. Thiswould not happen with a solely statistical method. The present MarginManagement method uses different thresholds for centered versusoff-center positions. There are also two different ranges for centerversus off-center positions. Each time the seat is vacated and thenoccupied the thresholds are reset to the middle of their respectiveranges.

Decision-Making Module

The final component in the occupant detection system is theDecision-Making Module 400. The Decision-Making Module 400 takes theinformation gathered from the other components and makes a deploymentstate decision for the airbag. Specifically, to make the deploymentstate decision, the Decision-Making Module 400 looks at DU trends (pastversus current DU) to evaluate occupant weight and movement, and patterninformation (pattern statistics, current pattern status, pattern sizeand location in seat). Based on a careful analysis of the weight,movement, and pattern information, the Decision-Making Module 400determines whether the airbag should be placed in the deploy or suppressstate.

The Decision-Making Module 400 relies most heavily on the patternstatus. Factors such as temperature, humidity, and aging will eachaffect the seat foam and sensors, altering the results of weightestimation with time and environmental changes. Occupant patterncharacteristics, on the other hand, remain predictable even with severevariations in sensor sensitivity. Another benefit from the basicprocessing of the Pattern System is the ability to track occupantlocation in the seat. The decision process requires a predefined periodof steady state before allowing itself to change decision status. Thisavoids decision oscillations when the system state hovers around apossible point of change. A change from “Suppress” to “Deploy” requiresthat the conditions for this change be stable for a period of deployWaitseconds. Changing from “Deploy” to “Suppress” requires steady conditionsfor the period defined by suppressWait seconds. Each of these periods isset to three seconds in the presently preferred embodiment but can beconfigured for any desired time period. A FIFO structure called Historyis used to keep a summary of system statistics for up to five seconds.This structure is used to make sure the system has been stable beforechanging state.

Experience with live occupants made it clear that allowing the system tochange its decision state during movement in the seat can result in baddecisions. An occupant constantly moving while trying to get comfortableor simply climbing into a seat may fail pattern recognition or not haveenough perceived weight to allow the system to make a “Deploy” decision.Since many statistical measurements are active during seat occupation,the system will not allow the occupied status to be set “TRUE” until theoccupant has been steady for an occupiedWait period.

Reliably recognizing the occupied and empty states of a seat isimportant to accurate classification. Failure to distinguish betweenthese states may cause the system to hang in an unusable state. There isa threshold DU level called emptyValue, which must be exceeded beforethe seat is eligible to be declared occupied. The occupant must also besteady before the occupied state will become “true”.

The statistics gathered for each second are categorized as static sincethey represent the momentary snapshots for each frame. Such staticstatistics are gathered whether the seat is occupied or not. Dynamicstatistics, however, are only collected when the seat is occupied. Aftermany tests it was determined that the pattern system always indicatesthe correct decision if its state is tracked statistically over theperiod of each seat occupation.

FIG. 36 is a graph showing the decision process as a seat is occupiedand then evacuated in a hypothetical situation. Sections A thru E showthe various stages of a seat occupation. The pattern system is passingthroughout this example.

Section A: The occupant has just entered the seat and the DU is climbingbut still below the Minimum level. At this point the system will notconsider changing from Suppress to Deploy while DUs are still belowMinimum.

Section B: The system DU is now above the Minimum level. The decisionperiod deployWait is used by the system before it officially changes itsstate to “Deploy”.

Section C: System DU is now above the Maximum level. Originally thislevel could only be forced to suppress if the Dynamic statistics forcedit. However, some extreme child seat testing made it necessary to turnthis feature off. This level can be used to pass extra informationconcerning the occupants size to the airbag system.

Section D: Now the occupant is beginning to climb out of the seat. Asthe DU drops below the Minimum level the decision to deploy is held.System DU must drop below the Release level for suppressWait time beforea decision change to “Suppress” will be made.

Section E: System DU has now dropped below the Release level and theDecision/Transition Period line indicates that a decision change isbeing evaluated. If system DU stays below Release for suppressWaitseconds the decision will be changed to “Suppress” as indicated by thesolid Suppress line.

FIG. 37 shows a typical session with a 5th percentile female. Noticethat her DU never goes above the Maximum level. The 5th percentilefemale is always passing the static and dynamic pattern tests in thisexample. FIG. 38 shows a typical session with a 6-year-old child. Thesystem DU never goes above the Minimum level. While this example showsthat the pattern test is passing, it should be noted that children willtypically not pass the pattern system. FIG. 39 is an example of a childseat being occupied and then tightened dramatically with the seat belt,causing the system DU to go over the Maximum level. Because the patternsystem does not pass for this occupant (indicated by the dashed line),however, the decision status never changes to “Deploy”.

Each frame, five different counters are used to monitor the staticframe-based statistics for each second of operation:

-   -   patternYES=>incremented if pattern filters are “TRUE” (occupant        is passing the pattern tests).    -   minYES=>incremented if system DU is greater than minDU level.    -   maxYES=>incremented if system DU is greater than maxDU level.    -   releaseYES=>incremented if system DU is greater than releaseDU        level.    -   ZeroYES=>incremented if system DU less than emptyValue level        (seat qualifies for empty status).

Since the number of frames in each second is pre-defined, the number offailures for each test can be calculated quickly. Referring to FIGS. 40and 41, at the end of each second, the static statistics are summarizedinto the History FIFO structure. First the structure is shifted to makeroom for the new summary data. Two thresholds are calculated based ondeployPercent and suppressPercent. These numbers represent thepercentage threshold that must be reached by each static count of thetotal frames per second before the summary may be swung toward a“Suppress” or “Deploy” decision. If the count qualifies in the “Deploy”direction it is assigned a DMdeploy value. If it qualifies in the“Suppress” direction it is assigned a DMsuppress value. If any countdoes not reach the necessary percentage total determined bydeployPercent or suppressPercent it is assigned a DMNeither value, whichmeans that it will not contribute to an overall decision change.

Then the FIFO is evaluated for the possibility of a decision change. Ifthe current status is “Deploy”, the suppressWait number of seconds isevaluated to see if all their summaries warrant a decision change. Tochange decision to “Suppress”, the following must be true for allevaluated History cells.

-   -   minDU values must all be DMsuppress.    -   maxDU values must all be DMsuppress.    -   releaseDU values must all be DMsuppress.    -   patternStatus does not matter.    -   occupiedStatus does not matter.

If the current status is “Suppress”, the deployWait number of seconds isevaluated to see if all their summaries warrant a decision change. Tochange the decision to “Deploy”, the following must be true for allevaluated History cells.

-   -   minDU values must all be DMdeploy.    -   maxDU values do not matter.    -   releaseDU values must all be DMdeploy.    -   patternStatus values must all be DMdeploy.    -   occupiedStatus values must all be DMdeploy.    -   **Occupant must also be steady (see below).

Recognizing when the occupant is moving or still (steady) is importantto system performance. Collecting snapshots or statistical informationwhile the occupant is in motion is very unreliable. However, collectinginformation when the occupant has been still (steady) for a period oftime increases the overall reliability of the system.

Referring to FIG. 42, the system can use either of two methods foroccupant motion detection. One simply monitors system DU fluctuationsover time against a pre-determined threshold. The other uses the patternsystem 300 to detect pattern shifts over time. Both methods are depictedin the flow chart shown in FIG. 42. Motion detection is currentlyperformed once per second. Upon entering the routine, a flag is checkedto see which type of motion detection has been activated (weight-basedor pattern-based).

Weight-Based Motion Detection

Following are the terms used in the weight-based (system DU)implementation of motion detection:

-   -   minChange: A preset threshold for amount of absolute change        tolerated in system DU before motion is flagged.    -   totalDU: Current system DU for current frame.    -   last_totalDU: Cached system DU from previous second—used to        compare against current system DU.

The absolute value of the difference between totalDU and last_totalDU iscompared against minChange. If this value is greater than minChange,motion is flagged in a system status bit. if(abs(last_totalDU -totalDU) > minChange) { system.flags.motion = TRUE; } else {system.flags.motion = FALSE; }Pattern-Based Motion Detection Following are the terms used in thepattern-based implementation of motion detection:

ScatterCount: The number of non-zero cells in the Raw Grayscale array260.

cellCount: Set equal to the previous second's ScatterCount.

cellDiffThreshold: A preset threshold describing the number of cellswhich may change from the previous pattern before motion is flagged tothe system. This term may be a percentage of total non-zero bits orsimply an absolute value. Using a percentage of non-zero bits allows thesensitivity to scale based on the size of the occupant.

rawGrayBits: An array of bits—one for each cell in the Raw GrayscaleArray 260. The current Raw Grayscale array 260 is used to create thisstructure. Each non-zero cell is represented as with a “1” (set bit).

last_rawGrayBits: The rawGrayBits structure from the previous second'smotion test.

diffCount: The number of non-zero cells after XOR-ing the current arrayof bits with the previous array of bits (i.e., the total number of cellsthat have changed).

Implementation of the pattern-based motion detection is as follows:

Step #1: The array rawGrayBits is filled with a “1” for each non-zerocell in the Raw Grayscale array 260 and a “0” for each zero cell.

Step #2: cellCount is set equal to ScatterCount (number of non-zerocells in Raw Grayscale array 260).

Step #3: rawGrayBits is XOR'd with last_rawGrayBits to create an arraywith “1's” representing the pattern-based difference from the previoussecond.

Step #4: diffCount is set to the number of non-zero cells after the XORprocess.

Step #5: The percentage change is calculated using diffcount andcellCount according to the equation: ((diffCount*100)/cellCount).

Step #6: The percentage is compared to cellDiffThreshold. If it isgreater the system motion flag is set “TRUE”.

Deciding when the seat is occupied and empty is an important task of theoccupant classification system 55. A description of the basic decisionalgorithm will now be provided. In general, the system checks everysecond to see if the seat occupied status has changed. The terms usedare:

totalDU: Current system DU for current frame.

emptyValue: DU threshold for empty or occupied seat.

occupiedWait: Number of seconds the system DU must be above emptyValuebefore status can be set to “occupied”.

emptyWait: Number of seconds the system DU must be less than or equal toemptyValue before status can be set to “empty”.

If the system is occupied, the system simply checks to see if totalDU(system DU) is less than or equal to emptyValue for a total of emptyWaitseconds. It does this using the History FIFO structure. If the system isempty it will not test for occupied status unless no motion is detected(must be steady). If the status is “steady”, it will check to see if thetotalDU (system DU) has been greater than emptyValue for occupiedWaitseconds. It does this using the History FIFO structure.

Referring to FIG. 43, the Dynamic Pattern Process is a running statisticof the occupant's pattern status for the entire period the seat isoccupied. These statistics are only collected when the occupant has been“steady” for a predefined period, sampleTime1. The statistics areweighted (increased by a greater amount) when the occupant has beensteady for an additional amount of time, sampleTime2. This is based onthe assumption that as the occupant is steady for longer periods oftime, greater statistical weight should be used for the data gathered.The terms used in this implementation are:

sampleTime1: Initial period of time the occupant must be steady beforesampleWeight1 is added to the running statistical sample.

sampleTime2: Secondary, longer period of time the occupant must besteady before sampleWeight2 is added to the running statistical sample.

steadyCount: System variable used to count the number of seconds thecurrent occupant has been steady. This value is always zero if there ismovement or the seat is empty.

patternPass: System Boolean variable that is set to “TRUE” if thecurrent occupant is passing the pattern recognition tests (occupantqualifies for “Deploy” decision—provided they are heavy enough).

patternY: Running statistical total used to represent pattern systempassing occupant.

patternN: Running statistical total used to represent pattern systemrejecting occupant.

sampleWeight1: Initial value added to patternY or patternN once occupanthas been steady for sampleTime1 seconds.

sampleWeight2: Secondary valued added to patternY or patternN ifoccupant has been steady for sampleTime2 seconds.

Use of Dynamic Pattern for Decision Process

The following terms are used in the dynamic pattern test for thedecision process: patternCutOff: If patternN and patternY are totaled,patternCutOff represents the percentage patternN must reach to force a“Suppress” decision.

Dynamic pattern is used to correct a wrong decision by the system. Overthe course of all testing to date, this statistic has always reflectedthe correct decision. When patternN and patternY are totaled, ifpatternN is large enough to exceed the patternCutOff percent, thedecision will be forced to “Suppress”. if(patternN || patternY) // makesure at least one is not zero { // now calculate percentage representedby patternN percentageN = (patternN * 100) / (patternN + patternY); }else percentageN = 0; if((use_Pattern) && (percentageN >=patternCutOff)) { Decision = Suppress; // if cutOff is met or exceeded }// force Suppress decisionSystem Timing

Understanding the timing of the system and knowing when data isprocessed is important to an overall understanding of the systemoperation. FIG. 44 schematically illustrates the timing of theclassification system according to a preferred implementation. Referringto FIG. 44, sensor data is read, conditioned, and processed by both theWeight Estimation 200 and Pattern Modules 300 at sixty frames persecond. At the end of each frame's processing, the results aresummarized and added to statistical data being kept for that second.Furthermore, every second, the last five seconds of frame histories areanalyzed and the current deploy status is updated.

It is important to note, however, that frame timing is simply anadjustable parameter of the classification system and can be set to anydesired frequency based on the particular needs of a given platform.There are at least three reasons why having an adjustableframe-processing rate is advantageous. First of all, there may becertain conditions that require a faster decision process. Second, theremay be a need to sample data at a different rate. Finally, frame-basedtiming makes exact simulation possible and promotes a robust developmentenvironment.

FIG. 45 shows the steps involved in updating the Current Decision, fromthe point of data entering the system to the point that a new decisionmay be determined. These steps will be described in more detail in thefollowing sections with reference to FIGS. 44 and 45.

Frame Processing

Frame Processing is based on the collection of sensor data. Each framestarts with the collection of sensor data 160 and ends with theincorporation of that data into the current second's statisticalinformation 326. Data collection includes reading resistivities from theseat sensors and transforming them into digital values ranging between“0” and “255” using one or more analog-to-digital (A-to-D) converters.This is done during the read sensors step 162. Other types of dataavailable to the system that could be detected and evaluated includethermistor data, ignition voltage, battery voltage, and so on.

A preferred embedded system embodiment has four A-to-D input lines, orread lines, dedicated for receiving seat sensor input. Each line is fedby an 8-to-1 multiplexer (MUX), allowing up to thirty-two analog sensorsignals to be multiplexed into the four A-to-D lines. The printedcircuit board (PCB) supports up to twenty-eight external seat sensors,although the presently preferred sensor mat design uses only twenty-twosensors.

Each sensor mat 50 (see FIG. 3) for a car platform will have its ownunique design based on the seat foam and trim. Each type of mat willtypically have its sensors connected to the PCB sensor bus in a uniqueorder. Once the raw sensor values are read across this bus, they must beconverted to a standard order for processing. Step 164 applies anInputMap to the sensor data in order to accomplish this. An InputMap isa 28-byte array used to re-map the sensor positions for a particular mat50. The same mapping is used for all seats in a platform. The array is1-based, allowing the values “0” and anything greater than “28” to havespecial meaning. Furthermore, each entry in the array is a 1-based (asopposed to a O-based) index used to re-map each raw sensor value to anew position in a 28-byte array. A for-loop in C computer language wouldlook like this: for (uchar i = 0; i<28; i++) { mappedSensors[i] =rawSensors[inputMap[i]−1]; }

Some designs may require the omission of certain sensors on a mat. Anyomitted sensor is designated with an index value of “0”. For omittedsensors, a dummy value of “50” is used as the raw data. This minimizesconditional processing throughout the rest of the system. Support forthis feature in the same loop described above would look like this: for(uchar i = 0; i<28; i++) { if(inputMap[i] != 0) { mappedSensors[i] =rawSensors[inputMap[i]−1]; } else { mappedSensors[i] = 50; } }

Once a sensor's input is mapped to a standard position, the sensor datais averaged against previous data for the same sensor during step 166.This is done with two cascading 3-byte buffers for each sensor. As eachbuffer is processed, a temporary byte is used to make that 3-byte bufferequivalent to a 4-byte buffer. This results in memory savings. The firstbuffer (avgBuf1) is used to average the direct sensor data where:Avg=(avgBuf1[0]+avgbuf1[1]+avgbuf1[2]+CurrentSensorData)/4

The averaged value from the first averaging buffer is fed into thesecond buffer (avgBuf2) where:Avg=(avgBuf2[0]+avgBuf2[1]+avgBuf2[2]+Avg)/4

Finally, after the averaging operation, each buffer's contents areshifted and the newest value is placed at position zero.

Weight Estimation During Frame Processing:

Following is an abbreviated description of the operation of the WeightEstimation Module 200 during frame processing. Although the WeightEstimation Module 200 has been previously described, a brief descriptionis contained here to facilitate a better understanding of the overallsystem in relation to frame processing. Still referring to FIG. 45, thefirst step 210 of weight estimation is a DU calculation for each sensor.The DU calculation uses the Averaged Sensor data that has been processedwith the averaging buffers and the seat calibration data (created duringthe seat assembly process) to calculate each sensor's deflection interms of a DU value. Specifically, each sensor is normalized and itsrelative deflection (Sensor Delta) is used to obtain a DU value (SensorDU) by interpolating on the Ledge Curve defined using the calibrationdata for that sensor.

A Raw Grayscale Array is then created (step 212) so that an OrphanFilter can be applied (step 214) before calculating (step 216) the RawDU. Although creation of the Raw Grayscale Array is described in theweight estimation section for accuracy, it is primarily used by thePattern Module 300. Grayscaling is the first step used by the PatternModule 300 to remove all absolute value references between sensors usingthe Sensor DUs. This helps the pattern for an occupant or object remainconsistent regardless of its weight. The Raw Grayscale Array is a28-byte array with grayscaled weights from “0” to “3” (with “3” beingthe most deflection). This array is used for most pattern-relatedoperations.

The Orphan Filter then searches, during step 214, for two types oforphan sensor deflections using the Raw Grayscale Array, namely, sensordeflections without any neighbors, and sensor deflections with only onediagonal neighbor. Any orphan sensor deflections found by the OrphanFilter are eliminated in both the Sensor DU Array and the Raw GrayscaleArray by writing a value of “0” at each orphan's location. This filterkeeps anomalous sensor movement from distorting results from the WeightEstimation and Pattern Modules.

The Raw System DU is calculated in the Weight Estimation Module 200,during step 216, by adding together all of the Sensor DU values in theSensor DU Array. The Raw DU value 208 is sent to the Pattern Module 300where it is used to calculate the Decision DU in a Decision Adjustmentphase 320. The Decision DU is ultimately what the system uses as thefinal estimated weight.

Pattern Evaluation During Frame Processing:

An abbreviated description of the Pattern Module 300 during frameprocessing will now be provided with continued reference to FIG. 45. AnAveraged Array is created in step 310 by computing its cell values fromthe average of the four Sensor DUs on its corners (with a “0” value forany corner without a Sensor DU). The Averaged Array is an anti-aliasedimage of the Sensor DUs. The Averaged Array is then reduced into anAveraged Grayscale Array with values from “0” to “3” to remove allabsolute references from the sensor data. The two grayscaled arrays (Rawand Averaged) are used to process the data in the Pattern Module 300.The relative weights of many regions are also calculated, as well as thewidth, height, number of active sensors, which rows and columns haveoccupied sensors, the grayscaled weights for each, and many othervalues.

Pattern subsystems of the Pattern Module 300 process the pattern dataduring step 312 to manage or influence the deploy or suppress status ofthe airbag by identifying non-live occupants such as child seats. TheChild Seat Detection subsystem directly initiates a suppress decisionwhen it identifies a deflection pattern indicative of a child seat. TheOccupant Classification subsystem, however, only indirectly contributesto system status by altering the final Decision DU when appropriate. TheOccupant Classification subsystem also monitors the occupant's positionin the seat to allow prioritization of status decisions. Two specificsubsystems include the Thin-Wide and ScatterCount subsystems. TheThin-Wide subsystem measures the width of the occupant in the AveragedGrayscale Array and determines if the width is indicative of a 5thPercentile Female or a 6-Year Old child. The ScatterCount subsystemanalyzes the number of non-zero cells in the Raw Grayscale Array 260. Ifeither of these subsystems determine that the data is indicative of a6-Year Old in the seat, it will make the Decision DU equal to one-halfthe Raw DU 208.

Updating the Frame Summary

FIG. 46 is a block diagram illustrating how the frame summary is updatedduring step 326 of the process illustrated in FIG. 45. Referring to FIG.46, statistical information from each of the previous five seconds 331,332, 333, 334, 335 is maintained by the classification system in aHistory FIFO queue 328. Some categories of statistical informationretained include Estimated Weight, Child Seat Pattern Results, andwhether Deploy or Suppress conditions are met. For each new frame, thestatus for each category has a counter incremented based on the newframe's state.

In the present preferred embodiment, the decision-making process occursevery second. This process could be adjusted, however, to occur at anyinterval of the Frame Process rate. During the decision-making process,the current (last second's) statistical counters 330 are summarized andpushed onto the History FIFO queue 328. Presently, up to five seconds ofhistory can be used to determine the deploy or suppress status. Itshould further be noted, however, that deploy and suppress statusdecisions can have different decision times. In order to allow differentdecision times, the deploy decision uses a Deploy Seconds value whilethe suppress decision uses a Suppress Seconds value.

The Decision-Making Module 400 further includes safety features toprevent transitioning between suppress and deploy states when it wouldbe inappropriate. One of these safety features prevents child seats andsmall children from causing a transition to the deploy state from thesuppress state. The system does this by not allowing a transition fromthe suppress state to the deploy state unless the following are true fora configurable number of consecutive seconds (preferably between 3-5seconds): First, the Child Seat Pattern Module subsystem must not have“failed” the occupant (i.e., identified a child seat); and second, theestimated weight must be above the minimum system DU setting.Conversely, to allow a transition from the deploy to the suppress state,the estimated weight must be below a system “release” DU setting for aconfigurable number of consecutive seconds (preferably between 3-5seconds).

Occupant motion and steady states are also tracked by the classificationsystem to ensure accurate and reliable deployment decisions. Another keysafety feature of this system is that certain operations are performedonly when the occupant is not moving. For instance, pattern statisticsare only collected when the occupant has been steady for apre-determined period of time. The decision to block information from anoccupant in motion is based on two main considerations. First, patternand weight statistics always tell a clear story after an occupant hasbeen in the seat long enough; and second, in order to prevent falsereadings, occupant statistics should only be collected when the occupanthas been stationary for a pre-determined period of time. Accordingly,all statistics are updated based on the occupant being stationary for agiven number of seconds.

Another process for preventing errors in deployment decisions is MarginManagement. Margin Management is the process of adjusting thresholds inthe system based on the current status of the occupant. For instance, ifthe occupant is clearly a small child, Margin Management may incrementthe thresholds used to characterize occupant size upward. This helpsdecrease the chance that a child will somehow fool the system over time.However, the thresholds are never adjusted to a point where a true adultcould not be detected. This mechanism allows for quick recoveries if aninitial decision is incorrect.

Having described and illustrated the principles of the invention invarious embodiments thereof, it should be apparent that the inventioncan be modified in arrangement and detail without departing from suchprinciples. I therefore claim all modifications and variations comingwithin the spirit and scope of the following claims.

1. A vehicle occupant detection system comprising: a sensor arraycomprising a plurality of sensors arranged in a vehicle seat; acalibration unit configured to calibrate the sensors to normalize sensorsensitivities across the sensor array; a weight estimation moduleconfigured to estimate a weight of a seat occupant based on deflectionsof the sensors created by the seat occupant; a pattern module configuredto analyze deflection patterns of the sensors; and a decision-makingmodule configured to make a deployment state decision for an airbagbased on data from one or more of the other modules.